web-dev-qa-db-ja.com

Amazon EC2インスタンスへのSSHアクセス時に権限が拒否されました(公開鍵)

Amazon ec2インスタンスを使用したいのですが、次のエラーが発生しました。

Permission denied (publickey).

キーペアを作成して .pem fileをダウンロードしました。

与えられた:

chmod  600 pem file.

その後、このコマンド

ssh -i /home/kashif/serverkey.pem  [email protected]

しかし、このエラーがあります:

Permission denied (publickey)

また、 filezillaに接続してファイルをアップロード/ダウンロードする方法を教えてください。

355
Kashiftufail

このエラーメッセージは、認証に失敗したことを意味します。

これらはそれを引き起こすことができる一般的な理由です:

  1. 間違ったキーで接続しようとしています。このインスタンスはこのキーペアを使用していますか?
  2. 間違ったユーザー名で接続しようとしています。 ubuntuは、ubuntuベースのAWSディストリビューションのユーザー名ですが、ec2-user(またはBogdan Kulbidaの回答によると、一部のDebiansではadmin)です(rootFedora、下記も参照)。
  3. 間違ったホストに接続しようとしています。あなたがログインしようとしている正しいホストですか?

EC2インスタンスの1.ファイルをめちゃめちゃにした場合も/home/<username>/.ssh/authorized_keysが発生することに注意してください。

2.については、どのユーザー名を使用すべきかについての情報がAMI Imageの説明から欠けていることがよくあります。しかし、いくつかはAWS EC2のドキュメントにあります。箇条書きの4.http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

インスタンスに接続するには、sshコマンドを使用します。秘密鍵(.pem)ファイルとuser_name @ public_dns_nameを指定します。 Amazon Linuxの場合、ユーザー名はec2-userです。 RHEL5の場合、ユーザー名はrootまたは ec2-user のいずれかです。 Ubuntuの場合、ユーザー名は ubuntu です。 Fedoraの場合、ユーザー名は Fedora または ec2-user のいずれかです。 SUSE Linuxの場合、ユーザー名は root です。そうではなく、ec2-userとrootが機能しない場合は、AMIプロバイダに確認してください。

最後に 、認証が失敗する理由は他にもたくさんあることに注意してください。この質問に対する他の多くの答えで説明されているように、SSHは通常あなたのSSHコマンドに-vオプションを追加してその出力を読むことを気にかけたならば何が悪かったかについてかなり明白です。

589
Thibault D.

この場合、問題はキーペアの紛失から生じます。これについて:

  • インスタンスのキーペアを変更する方法はありません。新しいキーペアを使用する新しいインスタンスを作成する必要があります。
  • インスタンスがElastic Beanstalk上のアプリケーションによって使用されている場合は問題を回避することができます

次の手順に従ってください。

  1. AWSマネジメントコンソールへのアクセス
  2. 開くElastic Beanstalkタブ
  3. すべてのアプリケーションタブからアプリケーションを選択してください
  4. 左側のメニューからConfigurationを選択します
  5. Instances Gearをクリック
  6. Server FormでEC2 Key Pair入力を確認し、新しいキーペアを選択します。作成したばかりの新しいキーペアを表示するには、リストを更新する必要があります。
  7. 保存する
  8. Elastic Beanstalkは新しいキーペアに関連付けられた新しいインスタンスを作成します。

一般に、EC2インスタンスがインバウンドSSHトラフィックを受け付けるようにする必要があることを忘れないでください。

これを行うには、EC2インスタンスのセキュリティグループに対して特定のルールを作成する必要があります。あなたはこれらのステップに従うことができます。

  1. AWSマネジメントコンソールへのアクセス
  2. 開くEC2 Tab
  3. Instancesリストから興味のあるインスタンスを選択してください
  4. インスタンスが使用しているセキュリティグループ _の名前を{説明タブ _で確認します。
  5. もう一度説明タブ規則の表示をクリックし、セキュリティグループにポート22での受信sshトラフィックに関する規則があるかどうかを確認します。
  6. そうでない場合は、ネットワークとセキュリティメニューでセキュリティグループを選択します。
  7. インスタンスで使用されているセキュリティグループをクリックし、クリック受信タブ
  8. [Inbound]タブの左側に、SSHインバウンドトラフィックのルールを作成できます。
    • 新しいルールを作成します:SSH
    • Source IPアドレス または サブネットワーク インスタンスへのアクセス元
    • :インスタンスに 無制限のアクセス を付与したい場合は、 0.0.0.0/0 を指定できますが、Amazonではこの方法をお勧めしません。
  9. ルールの追加をクリックしてから変更を適用するをクリックします。
  10. SSH経由でインスタンスに接続できるようになったかどうかを確認してください。

これが私を助けたように誰かを助けることができると思います。

48
Matteo Ceserani

これが私が問題を解決した方法です

ssh -i <key> [email protected]<ec2 ip>
43
Deepti Kohli

私はSudoを前に置くだけで問題を解決しました

Sudo ssh -i mykey.pem myec2.amazonaws.com

しかし、適切な解決策は、所有権を最初に変更し、次にJanus Troelsenが以下に述べるように普通のユーザーとして接続することです。私の場合、それはそうなるでしょう:

chown wellington:wellington key.pem
26

使ってみる

Sudo ssh -i mykey.pem [email protected]<ec2_ip_public_dns>

OR

Sudo ssh -i mykey.pem [email protected]<ec2_ip_public_dns>
23
Abhishek Gupta

このエラーのもう一つの考えられる原因:

ユーザーの ホームディレクトリがグループ書き込み可能 の場合、ユーザーはログインできません。

(Ubuntuインスタンスに再現)

22
Stepan

次の手順を実行する必要があります。

  1. Linuxを使用している場合は、sshクライアントまたは端末を開きます。
  2. 秘密鍵ファイルを見つけて、ディレクトリを変更します。
    cd <path to your .pem file>
  3. 以下のコマンドを実行してください。
    chmod 400 <filename>.pem
    ssh -i <filename>.pem [email protected]<ipaddress.com>

ubuntuユーザーが働いていない場合はec2-userを試してください。

ubuntu 12.04 ltsマイクロインスタンスの場合、オプションとしてユーザー名を設定する必要がありました

ssh -i pemfile.pem -l ubuntu dns
7
dc10

私は明らかにのためにエラーを拒否し、同じ許可で苦労しました

key_parse_private2: missing begin marker 

私の状況では、原因は現在のユーザーのssh設定ファイル(〜/ .ssh/config)でした。

以下を使用してください。

ssh -i ~/myKey.pem [email protected]<IP address> -v 'exit'

初期出力は以下のとおりです。

debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config

...多くのデバッグ行がここに入ります...

debug1: Next authentication method: publickey
debug1: Trying private key: /home/ec2-user/somekey.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.

上の3行目は、実際に問題が特定された場所です。しかし、私はデバッグメッセージを下から4行目(上)で探していましたが、誤解されました。キーに問題はありませんが、私はそれをテストして他の構成を比較しました。

私のユーザーのssh設定ファイルは、以下に示すように、意図しないグローバル設定によってホストをリセットしました。最初のHost行はコメントではありませんでした。

$ cat config
StrictHostKeyChecking=no
#Host myAlias
        user ec2-user
        Hostname bitbucket.org
#        IdentityFile ~/.ssh/somekey
#        IdentitiesOnly yes

Host my2ndAlias
        user myOtherUser
        Hostname bitbucket.org
        IdentityFile ~/.ssh/my2ndKey
        IdentitiesOnly yes

私は他の誰かがこれが参考になることを願っています。

5
Ben Paz

Ubuntuインスタンスに接続するときに、ユーザー名(ubuntu)を追加するのを忘れました。だから私はこれを試してみました:

ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com

そして正しい方法は

ssh -i /path/my-key-pair.pem [email protected]
4
JohnP

これは私に何度も起こりました。私はAmazon Linux AMI 2013.09.2とUbuntu Server 12.04.3 LTSを両方とも無料利用しています。

インスタンスを起動するたびに、アクセス許可が表示されるのを拒否しました。私はこれを確認していませんが、私の理論では、サーバにSSHで接続しようとする前にサーバは完全にセットアップされていません。許可を拒否して数回試行した後、数分待ってから接続できます。あなたがこの問題を抱えているならば、私は5分待ってからやり直すことを勧めます。

3
Wade Anderson

同じことが私にも起こりましたが、起こったことのすべては私のローカルマシン上のキーチェーンから秘密鍵が失われたことです。

ssh-add -K

キーを追加し直してから、接続するsshコマンドを実行しました。

2
eiTan LaVi

私はWinSCPでWindowsを使用しています。 Amazon EC2-VPC Linuxにアクセスするには、File ExplorerとPuTTY SSH Shellの両方でうまく機能します。 chmod pem fileを使用するため、myfile.ppkとは関係ありません。 変換済み by PuTTYgenpemファイルから.

2
Chetabahana

私自身の場合は、次のようにしました。

chmod 400 <key.pem>

ssh -i <key.pem> [email protected]_public_dns (for debian)

私は最初[email protected]パートを使用していました、そして私はこのプロンプトを得ました:

Please login as the user "ec2-user" rather than the user "root".
2
AJNinja

これはこのエラーを生成する可能性があるイライラするシナリオです:

別のインスタンスで作成したAMIから新しいインスタンスを起動する場合(インスタンスxyzなど)、新しいインスタンスはインスタンスAが使用したのと同じキーのみを受け入れます。これは完全に理解できますが、新しいインスタンスを作成するステップバイステップのプロセスで、うまくいかないキーを選択または作成するように求められるため、混乱します。

作成または選択したキーに関係なく、たとえばXYZなどに使用していたキーのみが新しいインスタンスに受け入れられます。

2
Seeker

私は次のことがわかるまでしばらくの間、これに苦労しました。

eb ssh

プロジェクトディレクトリからそれを使うと、bingo-bango no muss no fussになります。

2
JedA

やってみると

ssh -i <.pem path> [email protected]

ec2-userを使用するように促すメッセージが表示されます。

Please login as the user "ec2-user" rather than the user "root".

だから使う

ssh -i <.pem path> [email protected]

1
Jerome Anthony

私は同じ問題を抱えていて、それは非常に奇妙です。あなたがこれに従うよりもすべてうまくいっているとあなたが信じるならば:時々EC2インスタンスのためにユーザについての混乱があります! ec2-user、ubuntu、centosなどが表示されることがあるので、ユーザー名を調べてmachieを確認してください。

rootユーザーでログイン ssh -i yourkey.pem (400 permission) [email protected]<ip> エラーが発生し、利用可能なユーザー名が表示されます 。その後、そのユーザーでログインします。

1
Manoj Sahu

この問題は、下記のコマンドを使用してUbuntuボックスにログインすることで解決できます。

ssh -i ec2key.pem [email protected]
1
Prajith

これは基本的なことですが、ログインを試行しているユーザーを必ず確認してください。 Im私の場合、 は気を散らすものでした root / userを使ってみました。

ssh -i ~/keys/<key_name> [email protected]

しかし、 他のユーザー

ssh -i ~/keys/<key_name> [email protected]
1
Andre Araujo

私は同じエラーがありましたが、状況が異なりました。私にはそれは私がそこに私のリモートコンピュータに正常にSSH接続することができた多くの時間の後に青の外に起こった。私の問題に対する解決策をたくさん検索した後、ファイルのパーミッションがありました。私は私のコンピュータまたはsshのファイル/ディレクトリに属する​​リモートのものの中のアクセス権を変更していないので、それはもちろん奇妙です。だから archlinux wiki からここでそれは:

ローカルマシンの場合はこれを行います。

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ecdsa

リモートマシンの場合は、次のようにします。

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

その後、私のSSHは許可なしに再び動作するようになりました(公開鍵)こと。

1
Azriel

あなたはこれらのいくつかのことをチェックしなければなりません:

  1. あなたのIPアドレスが正しいことを確認してください
  2. 正しいキーを使用していることを確認してください
  3. 正しいユーザー名を使用していることを確認してください。管理者3.2。 ec2ユーザー3.3ウブントゥ

私は同じ問題を抱えていた、そして私がユーザー名をubuntuに変更した後それは解決した。 AWSでは、ドキュメントはユーザーec2-userに言及されていましたが、どういうわけか私にはうまくいきません。

1
Mehran

私は2回キーとsshコマンドラインを正しく持っていました(私は動作しているUbuntu 14.04インスタンスを複製しているので知っています)が、上のWade Andersonが示唆したように5分待っても新しいインスタンスにsshできませんでした。

私は機械を破壊して作り直さなければならなかった。これは2つの異なる機会に起こりました。最初は入ることができないので、何が悪いのかわかりません。

あなたがこの問題を抱えているのであれば、それを試してください。

1
Greg Bell

私の秘密鍵はパーミッション400に設定されていて、パーミッションがそれを '644'に設定することで私を助けました。

key_load_private_type:権限が拒否されました は私が取得していた特定のエラーです

解決策: Sudo chmod 644 <key.pem>

注:644に設定する必要があります、それは400で動作していませんでした

1
Kuldeep Dangi

大文字と小文字が区別されます。

間違った:SSH EC2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

SSH ec2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

0
Tanmay

考えられる別の問題:間違ったログインID

「使用方法」を確認してください

上記のすべての良い提案、しかし私が遭遇したのは私が既製のインスタンスを選択したということでした。インスタンスが起動したら、使用方法を確認してください。 「bitnami」を使用すると想定されていたときに、秘密鍵のログインIDを誤って使用しました(例:bitnami @ domain -i key.pem)

0
Mike Q

私は同様のエラーがありました

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: xxxx.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

私の問題は、Step 3: Configure instance detailの下のAdvanced details:からの起動時スクリプトのエラーのため、インスタンスが正しく起動しなかったことです。

私が入力したと思ったもの:

#include
 https://xxxx/bootstrap.sh


実際に入力したものがインスタンスの設定を壊す

#include

https://xxxx/bootstrap.sh

インスタンス側の公開鍵は作成されませんでした

0
RNA