AWS sshアクセスの「Permission denied(publickey)」の問題[終了]


284

sshを介してAWSインスタンスに接続する方法は?

私が持っています:

  1. AWSにサインアップしました。
  2. AWSウェブサイトで公開鍵と証明書を作成し、それらをディスクに保存しました。
  3. 私のコンソールに行き、環境変数を作成しました:

    $ export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    $ export EC2_CERT=/home/default/aws/cert-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    $ export EC2_PRIVATE_KEY=/home/default/aws/pk-EBAINCRNWHDSCWWIHSOKON2YWGJZ5LSQ.pem
    
  4. AWS APIにこのキーペアを使用するように伝え、キーペアをファイルに保存しました:

    $ ec2-add-keypair ec2-keypair > ec2-keypair.pem
    
  5. このキーペアを使用してAWS Ubuntu 9インスタンスを開始しました:

    $ ec2-run-instances ami-ed46a784 -k ec2-keypair
    
  6. インスタンスへのssh接続を確立しようとしました:

    $ ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com
    OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: Applying options for *
    debug1: Connecting to ec2-174-129-185-190.compute-1.amazonaws.com [174.129.185.190] port 22.
    debug1: Connection established.
    debug1: identity file ec2-keypair.pem type -1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: match: OpenSSH_5.1p1 Debian-5ubuntu1 pat OpenSSH*
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_5.1p1 Debian-5ubuntu1
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: server->client aes128-cbc hmac-md5 none
    debug1: kex: client->server aes128-cbc hmac-md5 none
    debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
    debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
    debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
    debug1: Host 'ec2-174-129-185-190.compute-1.amazonaws.com' is known and matches the RSA host key.
    debug1: Found key in /home/default/.ssh/known_hosts:11
    debug1: ssh_rsa_verify: signature correct
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: SSH2_MSG_SERVICE_REQUEST sent
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: ec2-keypair.pem
    debug1: read PEM private key done: type RSA
    debug1: Authentications that can continue: publickey
    debug1: No more authentication methods to try.
    Permission denied (publickey).
    

    何が問題で、どのように機能させるのでしょうか?


2
皮肉なことに、私はユーザー名として「root」を使用していますが、「ubuntu」(あなたが言及したもの)は私のAMIの正しい名前です。投稿していただきありがとうございます。
realjin

回答:


512

Ubuntuインスタンスの場合:

chmod 600 ec2-keypair.pem
ssh -v -i ec2-keypair.pem ubuntu@ec2-174-129-185-190.compute-1.amazonaws.com

他のインスタンスでは、のec2-user代わりに使用する必要がある場合がありますubuntu

私が使用したほとんどのEC2 Linuxイメージには、デフォルトでrootユーザーのみが作成されています。

参照:http : //www.youtube.com/watch?v=WBro0TEAd7g


6
あなたはロック!とても簡単です。
アレックス

50
ssh-add ec2-keypair.pemを使用して-iオプションを削除することもできます
AdamK

12
rootを試して「rootユーザーではなくec2-userユーザーとしてログインしてください。」と表示された場合は、rootの代わりにec2-userを使用してください
Tony

8
また、一部のUbuntuイメージには「ubuntu」ユーザーしか存在しないようです。(これは、sudoでrootになることができます。)
Falken教授の契約が2012

1
超、超便利。
NSCoder 2015年

93

今それは:

ssh -v -i ec2-keypair.pem ec2-user@[yourdnsaddress]

ありがとう。これを見つけるには年齢がかかりました-コンソールの接続情報には記載されていません!rootを使用しようとすると表示されますが、ec2-userは私のユーザー名への参照であると思いました。どー!
エイドリアンMouat

1
ちょっと、あなた。見つけるのは簡単ではありません。ありがとう!
vroomfondel 2013

ありがとう、簡単ではありませんtiこれを見つける

とても良い!ありがとうございました!
viana 2016年

46

Canonicalのリリースでは、同じ問題が発生しているubuntuイメージを使用してここに着陸した場合、デフォルトでユーザー「ubuntu」を使用します。


2
これを見つけるのは簡単ではありません。
グスタフ

17

Bitnami画像を使用している場合は、「bitnami」としてログインします。

明らかなようですが、私は見落としているものです。


あなたの答えは私の日を救った!
スーリヤ2013

2
もしかして?Seems <sarcasm>obvious</sarcasm>
Bob Stein

データベースのパスワードを見つける方法を含む、Bitnamiの手順
Bob Stein


5

Ubuntu 10.04とopenSSH

これは正確な使用法です:

ssh -v -i [yourkeypairfile] ec2-user@[yourdnsaddress]

例えば:

ssh -v -i GSG_Keypair.pem ec2-user@ec2-184-72-204-112.compute-1.amazonaws.com

:上記の例でのLinux / UNIXマシンに接続するためのAWSのチュートリアルから直接取られた http://docs.amazonwebservices.com/AWSEC2/latest/GettingStartedGuide/


ssh -iスイッチを使用すると、.pemファイルのみを使用できます。
ABHAY JOHRI 2017

5

また、pemファイルの権限が開かれている場合にも文句を言うでしょう。ファイルを600にchmodして修正します。


このヒントをありがとう-たくさん助けてくれました
ビリームーン

4
初心者のために...これを行うためのコマンドは次のようになりますchmod 600 your_file.pem
端午

5

私もこれに遭遇しました-コミュニティが作成したAMIを使用していることがわかりました-デフォルトのユーザー名はNiehter rootでもなく、ect-userやubuntuでもありませんでした。実際に、私はそれが何だったか全く分からなかった-私は「試したまでのルートを」とサーバが親切としてログインに頼まxxxのxxxは、それはあなたを伝えるものは何でもあります。

-乾杯!


4

ローカルマシンに秘密鍵が必要です

リモートマシンまたはサーバーのIPアドレスまたはDNS名を知る必要があります。これはAWSコンソールから取得できます

Linuxユーザーの場合

  • 秘密鍵の権限が600(chmod 600 <path to private key file>)であることを確認してください
  • sshssh -i <path to private key file> <user>@<IP address or DNS name of remote server>)を使用してマシンに接続します

Windowsユーザーの場合

  • PuTTyを使用してsshセッションを作成します(http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.66-installer.exe
  • 秘密鍵ファイルが.pem形式の場合、puttygenを使用して.ppkに変換します
  • PuTTyを起動し、PPKファイル、IPアドレス、またはリモートサーバーのDNS名を設定して、sshセッションを開始します。

chmod 400 <pem key>を使用してファイルの権限を変更します
Vaibhav Jain

3

使用する...

# chmod 400 ec2-keypair.pem

600のアクセス許可を使用しないでください。誤ってキーを上書きしてしまう可能性があります。


2

これは私のために働きました:

ssh-keygen -R <server_IP>

ワークステーションに保存されている古いキーを削除するには、

その後、同じsshをもう一度実行すると、うまくいきました:

ssh -v -i <your_pem_file> ubuntu@<server_IP>

ubuntuインスタンスの場合、ユーザー名は次のとおりです。AmazonLinux AMIのubuntuユーザー名は、ec2-userです。

イメージからインスタンスを再作成する必要はありませんでした。



2

接続するには2つのステップがあります。

あなたの秘密鍵のChmod 400、このように他の人はあなたの鍵にアクセスできません:

chmod 400 toto.pem

SSHでインスタンスに接続するには、インスタンスのパブリックIPアドレスを知っている必要があります。

ssh -i toto.pem ec2-user@XX.XX.XX.XXX

それが役に立てば幸い !


1

EBSを使用している場合は、実行中のインスタンスにEBSボリュームをマウントすることもできます。次に、その実行中のインスタンスにマウントして、/ homeで何が行われているのかを確認します。あなたはユーザーubuntuまたはec2-userのようなものを見ることができますか?または、〜/ .ssh / authorized_keysの下に適切な公開鍵がありますか


1

許可ec2-keypair.pemする必要があります400

chmod 400 ec2-keypair.pem


1

BitnamiからAWSイメージを実行している場合。ユーザー名はbitnamiです。乾杯!

私のデバッグを見て、最後のものを見てください:

*

ssh -v -i awsliferaysrta.pem.txt root@54.254.250.***
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: Connecting to 54.254.250.*** [54.254.250.***] port 22.
debug1: Connection established.
debug1: identity file awsliferaysrta.pem.txt type -1
debug1: identity file awsliferaysrta.pem.txt-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 05:5c:78:45:c9:39:3a:84:fe:f8:19:5d:31:48:aa:5f
debug1: Host '54.254.250.***' is known and matches the RSA host key.
debug1: Found key in /Users/macbookpro/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: awsliferaysrta.pem.txt
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 54.254.250.*** ([54.254.250.***]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Remote: Port forwarding disabled.
debug1: Remote: Agent forwarding disabled.
debug1: Remote: X11 forwarding disabled.
debug1: Remote: Forced command.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Please login as the user "bitnami" rather than the user "root".

*


1

私の場合(Mac OS X)、問題はファイルのブレークタイプでした。これを試して:

1.- TextWranglerで.pemファイルを開く

2.-アプリの下部で、ブレークタイプが「Windows(CRLF)」であるかどうかを確認します。


1

Amazon Linux AMIのec2-userとUbuntuイメージのubuntu。また、RHEL 6.4以降のec2-user RHEL 6.3以前のルートFedora ec2-user Centos root


0

このリストに追加するだけです。今朝、AWS EC2インスタンスに追加されたばかりの新しいユーザーで問題が発生しました。追いかけるために、問題はselinux(これは強制モードでした)と、ユーザーのホームディレクトリが新しいEBS接続ボリューム上にあったという事実です。どういうわけか、selinuxは他のボリュームが気に入らないと思います。他のすべての通常のsshの問題(/ etc / ssh / sshd_configは問題ありませんでした。もちろん、パスワードは許可されていません、権限は適切でしたなど)を調べたので、理解に時間がかかりました。

修正?

今のところ(ユーザーが別のボリュームにsshでアクセスできるようにする方法を理解するまで、またはどういうわけかそのボリュームを真のホームディレクトリポイントにする):

sudo perl -pi -e 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
sudo setenforce 0

それでおしまい。これで、新しいユーザーが自分のid_rsaキーを使用してログインできるようになりました。


0

同じ問題があった。「ec2-user」または「root」でログインしようとすると、アクセスが拒否されました(公開鍵)。

マシンイメージのAMI番号をグーグル化し、SSHログイン情報をDebianウィキページに正しく掲載しました。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.