AWS SSH连接错误:权限被拒绝(publickey)

时间:2014-04-30 15:55:59

标签: amazon-web-services ssh amazon-ec2 ssh-keys

我试图用SSH连接到我的EC2实例,然后我变得疯狂。我已阅读此帖并尝试了所有用户组合:

AWS ssh access 'Permission denied (publickey)' issue

它仍然不适合我。知道我错过了什么吗?

  roberto@ubuntu:~/keys$ ssh -v -i ec2-key-pair.pem ec2-user@ec2-54-72-242-0.eu-west-1.compute.amazonaws.com
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 hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com 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的建议:

    roberto@ubuntu:~/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
roberto@ubuntu:~/keys$ ssh -i ec2-key-pair.pem ec2-user@ec2-54-72-242-0.eu-west-1.compute.amazonaws.com
Warning: Permanently added the ECDSA host key for IP address '54.72.242.0' to the list of known hosts.
Permission denied (publickey).

8 个答案:

答案 0 :(得分:34)

您可能以错误的用户身份登录。如果它是Ubuntu实例,则命令为:

ssh -v -i ec2-key-pair.pem ubuntu@ec2-54-72-242-0.eu-west-1.compute.amazonaws.com

答案 1 :(得分:16)

虽然不是特定于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机器上,过去必须安装其他一些Web服务器)。

答案 2 :(得分:5)

我有类似的问题," key_parse_private2:缺少开始标记"使用用户名' ec2-user'但是当我改为ubuntu作为用户时,它得到了修复。

答案 3 :(得分:4)

尝试以下步骤:

ssh-keygen -R 54.72.242.0

sudo chmod 600 ec2-key-pair.pem

然后:

ssh -i ec2-key-pair.pem ec2-user@ec2-54-72-242-0.eu-west-1.compute.amazonaws.com

答案 4 :(得分:1)

要检查的另一件事是PermitRootLogin中的AllowUsers/etc/ssh/sshd_config

如果您的用户访问受限,即使成功进行密钥授权,此debug1: key_parse_private2: missing begin marker也会显示。

答案 5 :(得分:0)

是的,确实是一种误导性的消息。在我的情况下,我使用了错误的密钥。

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

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

答案 6 :(得分:0)

获取此错误的一种简单方法是损坏的.pem文件。

例如,如果缺少最后行,则会得到"缺少开始标记"。

确保.pem以:

结尾
  

----- END RSA私钥-----

答案 7 :(得分:-3)

许多问题都可能导致连接问题: 请检查以下设置:

  1. AWS安全组设置并检查ssh端口22策略
  2. 检查您在局域网连接中使用的防火墙设置
  3. 在本地计算机上生成ssh-keygen,然后将其添加到AWS Linux服务器中,以确保将来的安全。
  4. 在面板中重新生成新的ssh密钥。
  5. 如果您正在aws linux服务器上使用防火墙,请在mxtoolbox上检查您的ipblacklist。

如果可能,请首先尝试解决该错误。让我知道它是否有效。