我是EC2的新手。我从这个站点创建了我的安全凭证:
http://paulstamatiou.com/how-to-getting-started-with-amazon-ec2
它工作得很好,我重新启动,现在当我尝试连接时,我得到一个登录/密码提示。 (我从未设置过。)经过多次尝试,我收到了这个错误:
许可被拒绝(publickey,gssapi-with-mic)。
我做错了什么?
答案 0 :(得分:55)
我能想到的两种可能性,虽然它们都在你引用的链接中提到过:
您没有在用于登录服务器的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 -------)。如果这些都不起作用,我会怀疑密钥对文件的内容,所以尝试使用链接中的步骤重新创建它。
答案 1 :(得分:14)
我能够连接的关键是使用“ec2-user”用户而不是root用户。即:
ssh -i [full path to keypair file] ec2-user@[EC2 instance hostname or IP address]
答案 2 :(得分:5)
在我的情况下,这是因为我的主目录的权限是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对此非常严格。因此必须正确设置文件权限。
答案 3 :(得分:4)
标记为mecca831的答案:
ssh -v -i generated-key.pem ec2-user@11.11.11.11
[ec2-user@ip-11.11.11.11~] $ sudo passwd ec2-user 新密码 新密码
[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 ec2-user@11.11.11.11
并提示输入密码,不再需要密钥。
答案 4 :(得分:4)
我也遇到过这个问题。我发现发生这种情况,因为我忘了在主机名前添加用户名: 像这样:
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
它有效!
答案 5 :(得分:3)
您确定使用过正确的实例吗?我遇到了这个问题并意识到我尝试过的4个ubuntu实例之类的东西没有安装SSH服务器。
有关优质服务器的列表,请参阅“获取图像”大约一半。听起来你可能正在使用别的东西......这些图像上的默认用户名是ubuntu。
答案 6 :(得分:3)
1
我注意到对于像Amazon Linux这样的AMI,ec2-user@xxx.XX.XX.XXX会起作用。但对于ubuntu图像,我不得不使用ubuntu @。对于.pem来说,这只是一个问题,只是用户名。
答案 7 :(得分:2)
我能够使用ec2-user
登录ssh -i [密钥对文件的完整路径] ec2-user @ [EC2实例主机名或IP地址]
答案 8 :(得分:2)
经过大约半小时的搜索并尝试调试后,我才弄清楚了。我的情况涉及我为两个不同的ec2实例使用相同的pem文件,它适用于一个而不是另一个。
我的第一个实例是标准的aws linux ami amzn-ami-hvm-2014.03.2.x86_64-ebs。我只是用
ssh -i mypemfile.pem ec2-user@myec2ipaddress
并且有效。
然后我启动了一个fedora实例Fedora-x86_64-19-20140407-sda并尝试了同样的命令,但一直得到:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
将我的用户名从ec2-user更改为fedora之后就有效了!
ssh -i mypemfile.pem fedora@myec2address
答案 9 :(得分:1)
以上都没有对我有所帮助,但对于用户来说似乎很有希望。对于我使用'ubuntu'的配置是对的.....
ssh -i [密钥对文件的完整路径] ubuntu @ [EC2实例主机名或IP地址]
答案 10 :(得分:1)
我建议不要像其他一些答案那样设置密码。使用密钥文件更安全(没有人可以猜出你的密码)并且更方便(一旦你设置了配置文件)。这是一个基本的~/.ssh/config
:
Host my-ec2-server
HostName 11.11.11.11
User ec2-user
IdentityFile /path/to/generated-key.pem
现在您只需输入ssh my-ec2-server
就可以了!并且如其他答案中所述,使用-v在您的连接无法正常工作时获取额外信息。
答案 11 :(得分:0)
如果您的PC上有PPK文件,请使用puttygen.exe将其导出为OpenSSH文件,并在Mac(任何Unix机器)上使用。
我得到了同样的错误 -
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: Authentications that can continue: publickey,gssapi-with-mic
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-with-mic)
当我在Windows上使用PPK文件时,我按照上面描述的步骤和宾果!
$ ssh -i ec2-openssh-key root @ ec2-instance-ip
答案 12 :(得分:0)
使用AWS Toolkit for Eclipse时遇到了同样的问题。我创建了Getting Started实例,然后打开了一个shell。但是,用户设置为ec2-user。我使用Open Shell As ...命令并将用户设置为root。然后它奏效了。
答案 13 :(得分:0)
如果问题始终存在并且即使将文件权限更改为400或600后也连续发生了10-15次,那么在ec2实例上肯定是有问题的,因此请确保: 1.在尝试通过ssh实例访问SSH时,通过在末尾添加-v来检查日志,并查看它给出了任何特定内容。 2.确保为ssh使用正确的名称,例如Ubuntu。也许这取决于Linux发行版和您添加的用户,或者您已授予“ root user” ssh权限。 然后,如果没有帮助,请遵循此处的文档https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm 解决它。就我而言,它有所帮助,并且由于目录/文件权限混乱而发生。
答案 14 :(得分:0)
有类似的问题。以下是在Mac上设置SSH密钥和转发的步骤。为我自己做这些笔记-可能会帮助某人...检查您的配置。
这里的假设是没有按键设置。如果您已经有按键设置,请跳过本节。
$ ssh-keygen -t rsa-b 4096
生成公共/私有rsa密钥对。
输入要保存密钥的文件(/Users/you/.ssh/id_rsa):[按Enter] 输入密码(无密码时为空):[输入密码] 再次输入相同的密码:[再次输入密码]
修改〜/ .ssh / config以添加密钥文件的条目:
〜/ .ssh / config应该类似于:
主机*
AddKeysToAgent是
UseKeychain是
IdentityFile〜/ .ssh / id_rsa
将私钥存储在钥匙串中:
$ ssh-add -K〜/ .ssh / id_rsa
现在使用以下命令进行测试:ssh -A username @ yourhostname
应将密钥转发给您的主机名。假设您添加了密钥,则应该没有问题地进行连接。
答案 15 :(得分:0)
I was getting this error when I was trying to ssh into an ec2 instance on the private subnet from the bastion, to fix this issue, you've to run (ssh-add -K) as follow.
Step 1: run "chmod 400 myEC2Key.pem"
Step 2: run "ssh-add -K ./myEC2Key.pem" on your local machine
Step 3: ssh -i myEC2Key.pem root@ec2-107-20-4-100.compute-1.amazonaws.com
Step 4: Now try to ssh to EC2 instance that is on a private subnet without specifying the key, for example, try ssh ec2-user@ipaddress.
Hope this will help.
Note: This solution is for Mac.