2014-04-30 181 views
21

我试图用SSH连接到我的EC2实例,我变得疯狂。我已阅读这篇文章,尝试了所有用户的组合:AWS SSH连接错误:权限被拒绝(公钥)

AWS ssh access 'Permission denied (publickey)' issue

它仍然没有为我工作。任何想法我错过了什么?

[email protected]:~/keys$ ssh -v -i ec2-key-pair.pem [email protected] 
OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: /etc/ssh/ssh_config line 19: Applying options for * 
debug1: Connecting to ec2-54-72-242-0.eu-west-1.compute.amazonaws.com [54.72.242.0] port 22. 
debug1: Connection established. 
debug1: identity file ec2-key-pair.pem type -1 
debug1: identity file ec2-key-pair.pem-cert type -1 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_6.6p1 Ubuntu-2ubuntu1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.2 
debug1: match: OpenSSH_6.2 pat OpenSSH* compat 0x04000000 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr [email protected] none 
debug1: kex: client->server aes128-ctr [email protected] none 
debug1: sending SSH2_MSG_KEX_ECDH_INIT 
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 
debug1: Server host key: ECDSA e4:06:ee:a5:a5:d2:97:5f:0f:b7:06:5e:f2:b3:da:26 
debug1: Host 'ec2-54-72-242-0.eu-west-1.compute.amazonaws.com' is known and matches the ECDSA host key. 
debug1: Found key in /home/roberto/.ssh/known_hosts:3 
debug1: ssh_ecdsa_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: ec2-key-pair.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. 
Permission denied (publickey). 

UPDATE: 

根据@aldanux建议:

[email protected]:~/keys$ ssh-keygen -R 54.72.242.0 
# Host 54.72.242.0 found: line 4 type ECDSA 
/home/roberto/.ssh/known_hosts updated. 
Original contents retained as /home/roberto/.ssh/known_hosts.old 
[email protected]:~/keys$ ssh -i ec2-key-pair.pem [email protected] 
Warning: Permanently added the ECDSA host key for IP address '54.72.242.0' to the list of known hosts. 
Permission denied (publickey). 
+0

它看起来像'EC2琴键pair.pem'无效/损坏,' “key_parse_private2:缺少开始标记”'。 – PlasmaPower

+0

@PlasmaPower查看我的评论如下。谢谢。 – Rober

回答

3

试试这个步骤:

ssh-keygen -R 54.72.242.0 

sudo chmod 600 ec2-key-pair.pem 

然后:

ssh -i ec2-key-pair.pem [email protected] 
+1

从你建议的执行中查看我的更新评论。仍然一样:( – Rober

+1

我更新我的答案...尝试sudo chmod到你的密钥对...并告诉我发生了什么...我现在要走了...我后来显示您的评论 – aldanux

+0

得到了同样的错误:( – Rober

33

你可能登录的用户错误。如果它是一个Ubuntu的实例的命令是:

ssh -v -i ec2-key-pair.pem [email protected] 
+3

就我而言,我们一直在使用Ubuntu,因此我习惯于使用ubuntu用户:ubuntu @ host。测试Amazon Linux AMI时出现此错误。对于亚马逊Linux,你必须连接为ec2-user @主机 –

+0

使我的一天,多么愚蠢 – n3rd

+0

这是我正在寻找的答案.. Tnx :) –

5

我有一个类似的问题,“key_parse_private2:缺少开始标记”,同时使用用户名“EC2用户”,但是当我改变到Ubuntu的用户它得到了固定。

0

是的,的确是相当具有误导性的信息。在我的例子中,我使用了错误的键。

我们需要删除密钥对并创建新密钥对,除了我们的实例使用旧密钥对(因为您不能那么容易)。

错误消息是相同的,所以它是值得检查您的实例aws面板中的键名称匹配您在密钥巴黎使用的密钥对。

1

另一件要检查的是PermitRootLoginAllowUsers/etc/ssh/sshd_config

如果您的用户访问权限受限,即使成功授权后也会出现此debug1: key_parse_private2: missing begin marker

15

虽然没有具体到AWS,这无益的错误信息

debug1: key_parse_private2: missing begin marker

的晦涩的场景,比如当SSH用户的主目录的所有权(或权限)是不正确的一小撮下会发生在远程机器上。

解决此类和类似隐晦消息的最佳方法是检查远程计算机上的授权日志,前提是您有权访问,因为它通常会查明问题所在。在Debian和Ubuntu系统中,这是最容易tail(使用sudo的如适用)完成:

tail -f -n 80 /var/log/auth.log

在我的具体情况,我发现

Authentication refused: bad ownership or modes for directory /var/www

完全准确,简明:所有者:组被设​​置为daemon:daemon,当它应该是www-data:www-data(这是在一台Ubuntu机器上,过去必须安装其他一些网络服务器)。

+0

非常感谢。 .ssh目录的权限是775,它授予对组成员的写入权限。因此连接被拒绝。把它改成755的确有窍门。 – egelev

+0

谢谢,在远程计算机上的'auth.log'中解决了我的问题,这是'/home/backup/.ssh/authorized_keys文件中的错误选项...'(''中没有引号(''')' from =“ip1,ip2”')。但实际上'debug1:key_parse_private2:missing begin marker'仍然显示在'ssh -v'里,即使它工作。 – dentarg

+1

@dentarg感谢分享这个有用的观察:'debug1:key_parse_private2 :missing missing marker'仍然显示在'ssh -v'输出中,即使它工作。嗯...所以也许这个消息是一个“红鲱鱼”在我的情况。我想这个答案仍然有用,我想知道这条消息的真正根源是什么 –

0

以“admin”身份登录为我工作。根据您的实例类型,登录用户会更改。 ec2用户或Ubuntu的或在我的情况下管理员。 SSH -v -i ./my_key_file.pem [email protected]

同时确保为PEM文件的权限为600 搭配chmod 600 ./my_key_file .pem

0

发生此错误的一个简单方法是损坏的.pem文件。

例如,如果最近的行缺失,您将得到“缺少开始标记”。

确保的.pem结尾:

-----END RSA PRIVATE KEY-----