我对EC2很陌生。 我从这个网站创建了我的安全凭据:
http://paulstamatiou.com/how-to-getting-started-with-amazon-ec2
它运行得非常好,我重新启动后尝试连接时,会出现一个登录/密码提示框(我从未设置过)。 尝试多次后,我收到以下错误消息:
Permission denied (publickey,gssapi-with-mic)。
我做错了什么?
我对EC2很陌生。 我从这个网站创建了我的安全凭据:
http://paulstamatiou.com/how-to-getting-started-with-amazon-ec2
它运行得非常好,我重新启动后尝试连接时,会出现一个登录/密码提示框(我从未设置过)。 尝试多次后,我收到以下错误消息:
Permission denied (publickey,gssapi-with-mic)。
我做错了什么?
我能想到两种可能性,尽管它们都在你引用的链接中提到了:
在你用于登录服务器的ssh命令中,你未指定正确的SSH密钥对文件或用户名:
ssh -i [密钥对文件的完整路径] root@[EC2实例主机名或IP地址]
你没有正确的密钥对文件权限;你应该使用
chmod 600 [密钥对文件]
确保只有你可以读取或写入文件。尝试使用ssh的-v选项获取更多有关它失败的信息,如果需要更多帮助,请在此处回复。
[更新]: 好的,如果一切设置正确,你应该看到以下内容:
debug1: Authentications that can continue: publickey,gssapi-with-mic
debug1: Next authentication method: publickey
debug1: Trying private key: ec2-keypair
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
你是在包含 ec2-keypair 文件的目录下运行 ssh 命令吗?如果是,请尝试指定 -i ./ec2-keypair 来排除路径问题。同时,检查 "ls -l [ec2-keypair 的完整路径]" 文件并确保权限为 600(显示为 rw-------)。如果这些都不起作用,我会怀疑密钥对文件的内容,因此请尝试使用链接中的步骤重新创建它。
我成功连接的关键是使用"ec2-user"用户而不是root用户。例如:
ssh -i [full path to keypair file] ec2-user@[EC2 instance hostname or IP address]
在我的情况下,这是因为我的主目录权限是775,而SSH对此不满意。执行以下命令后应该可以正常工作:
server$ chmod go-w ~/
server$ chmod 700 ~/.ssh
server$ chmod 600 ~/.ssh/authorized_keys
今天下午我有非常类似的经历。我正在EC2上设置Django,突然无法再通过SSH登录到该实例。幸好我还有一个活动的连接,于是我修改了/etc/ssh/sshd_config
文件来设置:
PasswordAuthentication yes
并设置ec2-user
的密码,然后我就可以输入密码登录。
然而,在搜索了一些资料之后,我找到了这个帖子:http://ubuntuforums.org/showthread.php?t=577279。结果发现,在我的django安装过程中,我更改了我的主目录的权限,而SSH对此非常严格。因此,文件权限必须正确设置。
+1
我发现对于一些AMI(Amazon Machine Image)例如Amazon Linux,使用ec2-user@xxx.XX.XX.XXX即可登录。但是对于Ubuntu镜像,必须使用ubuntu@来代替。这并不是.pem文件的问题,而是用户名的问题。
我也遇到了这个问题。我发现是因为我在主机名前忘记添加用户名:
ssh -i test.pem ec2-32-122-42-91.us-west-2.compute.amazonaws.com
然后我加入了用户名:
ssh -i test.pem ec2-user@ec2-32-122-42-91.us-west-2.compute.amazonaws.com
它能正常工作!
跟随mecca831的回答:
ssh -v -i generated-key.pem ec2-user@11.11.11.11
[ec2-user@ip-11.11.11.11 ~]$ sudo passwd ec2-user newpassword newpassword
[ec2-user@ip-11.11.11.11 ~]$ sudo vi /etc/ssh/sshd_config 按照以下方式修改文件:
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no
# EC2 uses keys for remote access
#PasswordAuthentication no
保存
[ec2-user@ip-11.11.11.11 ~]$ sudo service sshd stop [ec2-user@ip-11.11.11.11 ~]$ sudo service sshd start
你应该能够按照以下方式退出并通过ssh登录:
ssh ec2-user@11.11.11.11
无需密钥,仅需密码即可进行提示。
你确定你使用的是正确的实例吗?我遇到过这个问题,发现我尝试的四个Ubuntu实例中有一些没有安装SSH服务器。
关于好的服务器列表,请参见“获取镜像”,大约在中间位置。听起来你可能在使用其他东西...这些镜像的默认用户名是ubuntu。
经过大约半个小时的搜索和尝试调试,我终于找到了解决方法。我的情况涉及到在两个不同的ec2实例上使用相同的pem文件,其中一个可以正常工作,而另一个则不能。
我第一次成功运行的实例是标准的aws linux ami amzn-ami-hvm-2014.03.2.x86_64-ebs。我只需使用以下命令:
ssh -i mypemfile.pem ec2-user@myec2ipaddress
然后它就有效了。
我启动了一个 Fedora-x86_64-19-20140407-sda 实例,尝试相同的命令,但一直收到以下提示:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
将我的用户名从 ec2-user 改为 fedora 后,它就可以工作了!
ssh -i mypemfile.pem fedora@myec2address
以上方法都没有帮助到我,但是调整用户似乎有希望。对于我的配置,使用“ubuntu”是正确的......
ssh -i [密钥文件的完整路径] ubuntu@[EC2实例的主机名或IP地址]
chmod 400
怎么样? - Timeless