无法通过ssh连接到亚马逊EC2账户(公钥错误)

4

我刚刚启动了一个EC2实例,但是我在初始化ssh连接时遇到了困难。请注意,我之前有一个使用相同密钥的EC2实例可以正常使用ssh。我很困惑,因为我使用相同的密钥对启动了这个新的EC2实例。

以下是我尝试过的方法。请问有什么专家建议可以解决这个问题吗?该怎么修复呢?

me@ubuntu:~/keys$ ssh -i mykey.pem ubuntu@1.2.3.4
The authenticity of host '1.2.3.4 (1.2.3.4)' can't be established.
RSA key fingerprint is aa:bb:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '1.2.3.4' (RSA) to the list of known hosts.
Permission denied (publickey).

me@ubuntu:~/keys$ chmod 400 mykey.pem
me@ubuntu:~/keys$ ssh -i mykey.pem ubuntu@1.2.3.4
Permission denied (publickey).

me@ubuntu:~/keys$ ssh -v -i mykey.pem ubuntu@1.2.3.4
OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 1.2.3.4 [1.2.3.4] port 22.
debug1: Connection established.
debug1: identity file mykey.pem type -1
debug1: identity file mykey.pem-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3
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 aa:bb:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc:cc
debug1: Host '1.2.3.4' is known and matches the RSA host key.
debug1: Found key in /home/me/.ssh/known_hosts:10
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: mykey.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).

你的ssh目录中有一个'publickey'文件吗?这很可能是错误的根源-ssh无法将公钥写入密钥链。 - Marc B
@codingjoe 你找到解决方案了吗?我也遇到了这个问题。 - gilzero
3个回答

2
你使用的密钥对可能是错误或丢失了,而且无法通过任何方式恢复私钥对,就像密码一样,亚马逊出于安全考虑不会保存私钥。 要解决这个问题: 1. 前往AWS管理控制台 2. 停止实例并创建相同的AMI镜像 3. 启动一个新实例,并附加一个新的密钥对 4. 然后将以前分配给旧实例的弹性IP地址分配给新实例。 5. 如果一切正常,请删除旧实例。 从现在开始,请将XXXX.pem文件保存在在线上某个地方。

0

尝试:

chmod 600 [FULL_PATH_TO_KEYFILE_DIRECTORY]/mykey.pem

使用 instead 代替。

如果您的 AMI 是 Amazon AMI,请使用 ec2-user 作为您的用户名。

如果仍然无法工作,请尝试将以下内容放入您的 ~/.ssh/config 文件中:

IdentitiesOnly yes
KeepAlive yes
ServerAliveInterval 60
Host ALAIS_FOR_YOUR_HOST
    User ubuntu
    HostName HOST_IP
    IdentityFile FULL_PATH_TO_KEY_FILE

谢谢,但还是不行。我将以上内容添加到我的~/.ssh/config文件中,但仍然出现相同的错误信息。还有其他建议吗? - codingJoe
@codingJoe 你试过先使用 chmod 600 YOUR_PEM_KEYFILE 吗?如果你的 AMI 不是亚马逊 AMI,那么在将此添加到你的 ~/.ssh.config 文件后,使用 ssh ALAIS_FOR_YOUR_HOST 进行连接。 - K Z

0

关键的调试日志如下:

debug1: Roaming not allowed by server

你是从3G/4G热点连接的吗?亚马逊EC2明显忽略了你的pem文件。


我无法通过热点连接到EC2,是否有简单的解释? - shanehoban
谢谢Mikhail,问题是IP地址的问题 - Google告诉我我的外部IP地址与我需要获取SSH访问所需的不同。亚马逊也认为它是另一个IP地址 - 相当奇怪...一旦我找到了正确的IP地址,它就可以工作了! - shanehoban
你是如何找到正确的IP地址的?我认为我正在遇到相同的问题。 - Darryl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接