2009-09-21 156 views
236

如何通過ssh連接AWS實例?AWS ssh訪問'Permission denied(publickey)'問題

我:

  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 [email protected] 
    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

諷刺意義的是,我用「根」作爲用戶名,但「Ubuntu的」 (你提到的)是我的AMI的正確名稱,並感謝你的發佈! – realjin 2012-02-15 14:33:15

+0

[當SSH訪問Amazon EC2實例時允許拒絕(公鑰)]的可能重複](http://stackoverflow.com/questions/18551556/permission-denied-publickey-when-ssh-access-to-amazon-ec2-instance ) – CtheGood 2015-07-29 15:36:30

回答

442

對於Ubuntu的實例:

chmod 600 ec2-keypair.pem 
ssh -v -i ec2-keypair.pem [email protected] 

對於其他情況下,你可能需要使用ec2-user,而不是ubuntu

我使用的大多數EC2 Linux映像只有默認創建的root用戶。

參見:http://www.youtube.com/watch?v=WBro0TEAd7g

+4

你搖滾!所以簡單! – Alex 2009-09-21 14:01:50

+46

你也可以使用ssh-add ec2-keypair.pem,這樣你可以刪除-i選項 – AdamK 2009-09-21 15:27:48

+0

我們遇到了同樣的問題 - 當我們使用root時,它告訴我們以ubuntu的身份登錄......但是作爲ubuntu它只是作爲上面的例子失敗。 – 2010-09-25 18:46:23

44

Canonical的版本使用的用戶「Ubuntu的默認情況下對任何人說快到了同樣的問題Ubuntu的圖像這裏登陸。

+2

不容易找到這一個。 – Gustav 2012-03-25 16:29:08

86

現在是:

ssh -v -i ec2-keypair.pem [email protected][yourdnsaddress] 
+0

謝謝。我花了很多時間才發現這一點 - 它沒有在控制檯的連接信息中提及!它確實告訴你什麼時候嘗試使用root,但我認爲ec2-user是對我的用戶名的引用。衛生署! – 2012-01-13 16:37:17

+1

哦,夥計。不容易找到。謝謝! – vroomfondel 2013-08-24 06:06:22

+0

謝謝,不容易找到這個 – erwin 2015-01-20 18:10:50

8

對於我的Ubuntu的圖像,它實際上是Ubuntu的用戶,而不是EC2用戶;)

15

如果您使用的是Bitnami圖像,登錄爲「 bitnami」。

似乎很明顯,但我忽略了一些東西。

+0

你的答案拯救了我的一天! – Surya 2013-09-26 19:54:31

+2

你的意思是? '似乎明顯' – 2015-11-09 20:11:12

+0

[Bitnami說明](https://bitnami.com/aws-credentials),包括如何找到數據庫密碼。 – 2015-11-09 20:49:19

5

它也將抱怨如果PEM文件權限過於開放。將該文件chmod修改爲600以解決該問題。

+0

感謝這個提示 - 幫助了我很多 – 2012-09-25 20:32:30

+3

新手..命令要做到這一點是: '使用chmod 400 搭配chmod 600 your_file.pem' – Evildonald 2013-01-28 00:11:19

2

這個工作對我來說:

ssh-keygen -R <server_IP> 

刪除存儲在工作站上的舊密鑰 也代替

然後再次做同樣的SSH工作,它的工作:

ssh -v -i <your_pem_file> [email protected]<server_IP> 

在Ubuntu情況下,用戶名是:亞馬遜的Linux AMI的Ubuntu 的用戶名是:EC2用戶

我不必從圖像重新創建實例。

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密鑰登錄。

4

我也運行到這一點 - 原來我用社區創建AMI - 和默認的用戶名是niehter根,也不是ECT-用戶或Ubuntu。事實上,我不知道這是什麼 - 直到我試圖「」和服務器客氣地邀請我登錄爲XXX其中XXX是不管它告訴你。

-cheers!

0

有同樣的問題。嘗試使用'ec2-user'或'root'登錄時,權限被拒絕(publickey)。

Google搜索本機圖像的AMI數量,它有自己的權利Debian的維基頁面上的SSH登錄信息。

希望這會有所幫助。

0

如果您正在使用EBS,你也可以嘗試安裝EBS捲上運行的實例。然後將其掛載到正在運行的實例上,並查看/ home中發生了什麼。你可以看到的東西是用戶的Ubuntu或EC2用戶?或者它有下的〜/ .ssh/authorized_keys中右公鑰

0

權限ec2-keypair.pem應該400

chmod 400 ec2-keypair.pem

3

使用...

# chmod 400 ec2-keypair.pem 

不使用600權限,否則您可能會意外覆蓋您的密鑰。

2

對於Debian EC2實例,用戶爲admin

1

如果您從Bitnami運行AWS映像。用戶名將是bitnami。乾杯!

看到我的調試,並期待在最後一個:

*

ssh -v -i awsliferaysrta.pem.txt [email protected]*** 
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 [email protected] 
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". 

*

0

有2個步驟連接:

搭配chmod 400你的私鑰,像這樣其他人無法訪問您的密鑰:

chmod 400 toto.pem 

要連接到您的實例在SSH,你需要知道你的實例的公網IP地址:

ssh -i toto.pem [email protected] 

希望它能幫助!

1

在我的情況下(Mac OS X),問題在於文件的中斷類型。試試這個:

1.-公開賽的TextWrangler

2:.pem文件在應用程序的底部,驗證是否符類型是「視窗(CRLF)」。

1

它的EC2用戶爲亞馬遜Linux AMI和Ubuntu的Ubuntu圖像。 此外,RHEL 6.4和更高的EC2用戶 RHEL 6.3和更早根 Fedora的EC2用戶 Centos的根

2

你必須有你的私鑰在本地計算機

你需要知道IP地址或您的遠程計算機或服務器的DNS名稱,你可以如果你是一個Linux用戶

  • 確保從AWS控制檯

    得到這對私鑰的權限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用戶

+0

更改文件的權限 – 2016-06-02 13:19:18

相關問題