连接AWS EC2实例时,尽管提供了PEM文件,仍需要输入密码。

13

我刚在 AWS 上创建了一个 EC2 实例。在此之前,我创建了我的密钥对并下载了私钥。

现在我正试图登录到这个新创建的实例上(当然,使用正确的主机名,这里我为安全起见替换了)。我添加了 -v 开关以获取调试输出:

ssh ec2-user@myVirtualHost.compute-1.amazonaws.com -i ~/EC2key.pem -v
尽管我提供了密钥文件,但仍被要求输入密码。下面是调试输出的摘录,可能会显示出问题所在:
debug1: Host 'myVirtualHost.compute-1.amazonaws.com' is known and matches the ECDSA host key.
debug1: Found key in /home/myuser/.ssh/known_hosts:15
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,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/myuser/EC2key.pem
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password
ec2-user@myVirtualHost.compute-1.amazonaws.com's password:[asks for password here]

为什么在“读取PEM私钥完成:RSA类型”之后,结论是“可以继续进行的认证方式:公钥、口令”?


可能是重复问题: https://dev59.com/Wmkw5IYBdhLWcg3woMJD - Rishabh
3
是的,而且还没有得到答复。我的ssh_config中没有将PasswordAuthentication设置为yes。那里只启用了以下设置:SendEnv LANG LC_*;HashKnownHosts yes;GSSAPIAuthentication yes;GSSAPIDelegateCredentials no。 - Passiday
3个回答

9

我非常高兴并感到谦卑,因为问题是我尝试使用不存在的用户进行SSH。我正在遵循的教程建议使用一个登录名,该名称与相应AMI中的用户名不符。当他们仔细检查他们的教程时,亚马逊支持人员建议这样做。

我不确定是否有方法从EC2管理控制台中发现默认登录名。至少,在属性中搜索正确的用户名未找到任何匹配项。

现在我可以无需通过 -i 选项提供密钥文件进行登录,因为我已使用ssh-add命令将密钥添加到我的密钥环中。


这是 EC2 实例使用的默认用户名列表。 - Abhidemon

1

好的,这可能是由于客户端或服务器端的原因导致失败。

客户端:请确保您的 .ssh 目录权限为 0700,EC2key.pem 文件权限为 0600。

服务器端:请确保 'PubkeyAuthentication' 在您的 sshd_config 文件中设置为 'yes'(如果您能够登录)。如果您有访问权限,还可以手动以调试模式运行 SSH 服务 (-d 标志) 来捕获其他潜在原因。


我的~/.ssh目录权限是drwx------,pem文件权限是-rw-------,所以我猜这符合你提到的0700和0600。但是我没有任何方法进入服务器端。使用密钥文件的那个应该是最初的方法。 - Passiday
你正在使用的AMI是由谁创建的?他们的配置很可能没有正常工作。如果你使用的是“官方”的AMI或直接来自亚马逊的AMI,那么应该可以正常工作。 - Mark Stanislav
我正在遵循这里的指示(http://aws.amazon.com/articles/7249489223918169),参加Udacity的CUDA课程。因此,AMI是从所谓的官方模板生成的。 - Passiday
我明白了。那么,我猜最后的想法就是与他们交谈,以验证是否还有其他人遇到了这个问题。如果你的密钥确实是你创建并分配给实例的密钥,本地文件的权限正确,那么我想测试的余地不大,直到你让某个人直接访问该 AMI。抱歉! - Mark Stanislav
谢谢您的尝试 :) 如果我修好了,我会回复这个帖子。 - Passiday

0

你尝试过将密码添加到Keyring中吗?

阅读本文。

http://aws.amazon.com/articles/1233

# vi /etc/ssh/sshd_config

找到这一行 PasswordAuthentication yes

并将其改为 PasswordAuthentication no

保存文件并重启sshd: # /etc/init.d/sshd restart


是的,它仍然要求密码。但调试输出略有不同: debug1:可以继续进行的身份验证:publickey,password debug1:下一个身份验证方法:publickey debug1:提供RSA公钥:/home/myuser/EC2key.pem debug1:可以继续进行的身份验证:publickey,password - Passiday
抱歉造成混乱,我不知道在注释文本中没有添加换行的方法。 - Passiday
密钥环应该可以正常工作,这里有一篇文章可以帮助你 http://aws.amazon.com/articles/1233 - Rishabh
执行这个操作把我锁在了实例外面,直到我显式地运行 ssh -i "path/to/pem_file" my.instance 才能重新进入。 - dutzi

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