在Mac OSx上通过SSH连接到EC2时的权限错误

时间:2010-02-01 19:25:29

标签: macos ssh amazon-ec2

我是EC2的新手。我从这个站点创建了我的安全凭证:

http://paulstamatiou.com/how-to-getting-started-with-amazon-ec2

它工作得很好,我重新启动,现在当我尝试连接时,我得到一个登录/密码提示。 (我从未设置过。)经过多次尝试,我收到了这个错误:

许可被拒绝(publickey,gssapi-with-mic)。

我做错了什么?

16 个答案:

答案 0 :(得分:55)

我能想到的两种可能性,虽然它们都在你引用的链接中提到过:

  1. 您没有在用于登录服务器的ssh命令中指定正确的SSH密钥对文件或用户名:

    ssh -i [密钥对文件的完整路径] root @ [EC2实例主机名或IP地址]

  2. 您对密钥对文件没有正确的权限;你应该使用

    chmod 600 [密钥对文件]

  3. 确保只有您可以读取或写入文件。

    尝试在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。

https://help.ubuntu.com/community/EC2StartersGuide

答案 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.