2009-09-21 154 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

相关问题