web-dev-qa-db-ja.com

Amazon Ec2インスタンスにSSHで接続しようとしています - アクセス許可エラー

これはおそらく、ばかげて単純な質問です。

私はAmazon EC2で新しいLinuxインスタンスを作成し、その一環として.pemファイルをダウンロードしてSSHで接続できるようにしました。

Sshを使ってみたとき

ssh -i myfile.pem <public dns>

私は得た:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

この記事に続いて 私はpemファイルに+600をchmodしようとしました、しかし今私がsshしたとき私はちょうど得ます:

Permission denied (publickey).

私がここで何をしているのですか? .pemファイルは私のホームフォルダ(osx内)にあります。権限は次のようになります。

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem
628
Matt Roberts

問題はファイルに間違ったmodを持っていることです。

実行することで簡単に解決 -

chmod 400 mykey.pem

Amazonの指示から得た -

SSHが機能するためには、あなたの鍵ファイルを一般公開してはいけません。必要に応じてこのコマンドを使用します。chmod 400 mykey.pem

1229
Kof

ログインに間違ったユーザー名を使用している可能性があります。

  • ほとんどのUbuntu画像はユーザーubuntuを持っています
  • AmazonのAMIはec2-userです
  • ほとんどのDebianイメージはrootadminを持っています

ログインするには、sshコマンドを調整する必要があります。

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host

HTH

251
Till

私はこれが とても ゲームに遅れていることを知っています...しかしこれ/ 常に は私のために働きます:

ステップ1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

ステップ2、単に:)でSSHを使う

ssh user_name@<instance public dns/ip>

例えば.

ssh [email protected]

これが誰かに役立つことを願っています。

56
user2838357

わかりました、私のために働いたのは唯一のことでした:

  1. キーの権限を変更する

    chmod 400 mykey.pem

  2. 必ず ec2-user と正しいec2-99 ...アドレスを使用してログインしてください。あなたがログインしてインスタンスがリストされているのを見ると、ec2-99アドレスはawsコンソールの一番下にあります。

    ssh -i mykey.pem [email protected]

37
bobobobo

この記事 を見てください。あなたはパブリックDNSを使用せず、むしろフォームを使用します

ssh -i your.pem [email protected]

名前がAMIパネルに表示されている場所

27
renick

キーファイルの権限を次のように変更します。

chmod 400 key-file-name.pem

インスタンスへの接続についてはAWSのドキュメントを参照してください。

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

14
Ayush Goyal

ウィンドウズでは、pemファイルのプロパティへ行き、セキュリティタブへ行き、次に進むボタンへ行きます。

継承とすべての権限を削除します。それからあなた自身にフルコントロールを与えなさい。結局、SSLはあなたに同じエラーを二度と与えないでしょう。

7

Mac端末では、 "chmod 400 xyz.pem"を実行しても私には役に立ちませんでした、それは許可が拒否されたと言い続けました。 Ubuntuのユーザーのために私はお勧めします

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected](ユーザーがubuntuであることに注意してください)
6

私はこの質問がすでに答えられたことを知っていますが、それらすべてを試したことがある人たちのために、あなたはまだ厄介な "Permission denied(publickey)"を得ています。 Sudoであなたのコマンドを実行してみてください。もちろん、これは一時的な解決策であり、アクセス権を正しく設定する必要がありますが、少なくとも現在のユーザーが必要としている権限で実行されていないことを識別できるようにする必要があります。

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

これを実行すると、次のようなメッセージが表示されます。

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

どちらもまばらに文書化されています。その場合はこれを実行してください。

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

そしてあなたは栄光を得るでしょう:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|
6
Ricardo Cid

SSHキーとファイル許可のベストプラクティス

  • .sshディレクトリ - 0700(所有者のみ)
  • 秘密鍵/ .pemファイル - 0400(所有者のみ読み取り)
  • 公開鍵/ .pubファイル - 0600(所有者だけが読み書き可能)

    chmod XXXX file/directory

4
Ryan

ssh -i /.pem user @ホストマシンIP

私はあなたが間違った資格情報を入力したか、あなたが秘密鍵ではなく公開鍵を使用しているか、あるいはあなたのポート許可がsshに対してALLに対して開かれているかのどちらかであると思います。これはAmazonには悪いことです。

3
Syed Priom

PuTTYを使用した代替ログインその良いですが、いくつかの手順が必要です。

  1. 最初にEC2インスタンスを作成したときに生成された.pemを取得します。
  2. PuTTYは.pemを読み取らないため、 PuttyGen を使用して.pemファイル.ppkを変換します。
  3. PuTTYを開き、 ホスト名 を入力します。これは、インスタンスのユーザー名+パブリックDNSです(例:ubuntu@ec2-xxx-xxx-xxx- xxx.region.compute.amazonaws.com)。 あなたのAWSアカウントのユーザー名ではありません
  4. それから 接続> SSH>認証 にナビゲートします。それから .ppk ファイルを追加してください。 "認証用の秘密鍵ファイル"と表示されているBrowseをクリックします。
  5. [開く]をクリックすると、すぐに接続を確立できるはずです。

WindowsでPuTTY 0.66を使っている。

3
jarvis

私にとっての問題は、私の.pemファイルが私のNTFSパーティションの1つにあるということでした。私はそれを私のLinuxパーティション(ext4)に移動しました。

次のコマンドを実行して必要な権限を与えます。

chmod 400 my_file.pem

そしてそれはうまくいった。

2

このエラーの背後にある3つの理由が考えられます。

  1. あなたは間違ったキーを使っています。
  2. あなたの鍵は正しい許可を持っていません。 400にchmodする必要があります。
  3. 間違ったユーザーを使用しています。 Ubuntuの画像は ubuntu 、AmazonのAMIは ec2-user 、debianの画像は root または admin のいずれかです。
2
Jagatveer Singh

Chmod 400 yourkeyfile.pemを実行します。インスタンスがAmazon linuxの場合、ssh -i yourkeyfile.pem ec2-user @ ip(ubuntuの場合)ssh -i yourkeyfile.pem ubuntu @ ip(centosの場合)ssh -i yourkeyfile.pem centos @ ip

2
sathee005

鍵ファイルは一般に公開されるべきではないので、許可を使用してください。400

chmod 400 keyfile.pem

上記のコマンドがパーミッションエラーを示す場合

Sudo chmod 400 keyfile.pem

それでも問題が解決しない場合は、ec2マシンにSSHで接続します。 ec2-user を使用します。

ssh -i keyfile.pem [email protected]

1
singh30

許可されたユーザーのみを許可して、pemファイルの許可を0600に変更するだけで、魅力的に機能します。

Sudo chmod 0600 myfile.pem

それからsshを試してみてください。

ssh -i myfile.pem <<ssh_user>>@<<server>>
1
Prash

他の答えに加えて、これが機能するために私がしたことがあります。

  • まだ持っていない場合は、キーを.sshフォルダにコピーします。

cp key.pem ~/.ssh/key.pem

  • キーに適切な権限を与えます。

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • それから、キーを追加します

ssh-add ~/.ssh/key.pem

これでEC2をSSHにできるはずです(:

1
Rodrigo Nantes

チェックリスト:

  1. 正しい秘密鍵の.pemファイルを使用していますか?

  2. その権限は正しく設定されていますか? (私のAmazonブランドのAMIは644で動作しますが、Red Hatは少なくとも600か400でなければなりません。Ubuntuについては知りません。)

  3. あなたはあなたのSSHラインで正しいユーザ名を使っていますか? Amazonブランド= "ec2-user"、Red Hat = "root"、Ubuntu = "ubuntu"。ユーザーは "ssh -i pem usename @ hostname" OR "ssh -l username -i pem hostname"のように指定できます。

1
fivedogit

デフォルトでは、パーミッションはpemキーを許可していません。権限を変更するだけです。

chmod 400 xyz.pem

そして、もしubuntuインスタンスが接続しているなら:

ssh -i xyz.pem [email protected]

1
rahul kumar

さて、あなたの投稿の説明を見て私はあなたによって行われた2つの間違いがあったと感じています -

  1. 秘密鍵に正しい許可を設定してください 。以下のコマンドは、正しいファイルパーミッションを設定するのに役立ちます。

    chmod 0600 mykey.pem

  2. あなたがログインしようとしている間違ったec2ユーザー

    あなたのデバッグログを見て、私はあなたがAmazon linuxインスタンスを生み出したと思います。そのインスタンスタイプのデフォルトユーザーはec2-userです。インスタンスがubuntuの場合、デフォルトのユーザーはubuntuです。

    ssh -i privatekey.pem default_ssh_user@server_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or Fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

ソース: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

SSHが機能するためには、あなたの鍵が一般に公開されてはいけません。必要に応じてこのコマンドを使用してください。

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

例:

ssh -i "Interview-apps.pem" ec2-user@ec2-**-***-***-***.us-west-2.compute.amazonaws.com
0
BigData-Guru

以下は、Linuxユーザーが.pemファイルを使用してサーバーに接続するための簡単な手順です。

ステップ1:pemファイルの場所へ移動し、home .sshの場所へコピーする。

cp example.pem ~/.ssh/example.pem

ステップ2:権限を変更する

chmod 400 ~/.ssh/example.pem

手順3:次のコマンドを実行する

ssh -i ~/.ssh/example.pem [email protected]

このコマンドは長すぎるので、次のコマンドを使用してこれのエイリアスを作成する必要があります。

 vim ~/.bashrc

最後に同じコマンドを次のように書いてください。

alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'

システムを再起動し、sshConnectを使ってサーバーに接続します。

0
Ajai

私はこの問題の背後にある2つの理由を見ました

1)アクセスキーに正しい権限がありません。デフォルトのアクセス権を持つPemキーは、安全な接続を確立することができません。権限を変更するだけです。

chmod 400 xyz.pem

2)また、適切なユーザー認証情報でログインしたかどうかも確認してください。それ以外の場合は、接続中にSudoを使用してください

Sudo ssh -i {キーファイル} ec2-user @ {リモートホストのIPアドレス}

0
Abhijit Barua

それはあなたのawsのpemキーに関する単なる許可の問題です。

下記のコマンドでpem keyのパーミッションを400に変更するだけです。

chmod 400 pemkeyname.pem

ファイルの権限を変更する権限がない場合は、下記のようにSudoを使用できます。

Sudo chmod 400 pemkeyname.pem

これでうまくいくことを願っています。

0
Deepak N

これを修正したのは、.pemファイルをappsディレクトリ内に移動することでした。 fooappが私のアプリの名前だと言ってもいいでしょう。私はそれを直接そこに置いた。

0
Nick Res