2011-01-28 175 views
72

这似乎是一个常见问题,但我的具体情况似乎有点不同。Amazon EC2 Permission denied(publickey)

我使用命令行工具设置了一个新的Amazon EC2实例,并通过SSH连接并执行了一些配置工作。

但是,最初,我不能ssh到实例,我不得不停止并重新启动实例,然后我可以连接。在重新开始之前,我刚刚得到了答复。

Permission denied (publickey). 

这是昨天晚上,今天早上我回到同一个实例,现在我得到的是

Permission denied (publickey). 

我已经试过没有快乐重启实例。

任何人都可以在正确的方向指向我吗?昨晚工作的命令不再有效,我从Macbook Pro连接。

回答

75

我要回答的情况下,其他人我自己的问题看到了同样的事情......昨天晚上我做了:

ssh-add ~/.ssh/[keypair name] 

然后被连接用:

ssh [email protected][ec2 instance ip] 

这早上我试了一样,无法连接。但这样做

ssh -i ~/.ssh/[keypair name] [email protected][ec2 instance ip] 

得到我。

的密钥对使用ssh-add再次打动了我。我猜ssh-add只有我会发出它在壳体内的工作。当我关闭了终端窗口,并打开另一个我不再有没有明确的密钥对可用。

+8

感谢的人,一直忘记使用“ec2用户”的一部分和返回的错误消息是不是很有关该错误信息 – pulkitsinghal 2012-02-26 04:01:16

+20

如果是Ubuntu实例,请使用ssh -i〜/ .ssh/[keypair name] ** ubuntu ** @ [ec2 instance ip] – 2014-01-13 21:02:33

+0

Elastic Map Reduce cluster - > hadoop @ [ec2 instance ip] – craastad 2014-04-09 09:57:27

14

我遇到了类似的问题,它证明是在主文件夹的权限。值得庆幸的是我还有另一个现有的SSH连接打开,以便我能检查日志的EC2实例:

$ sudo的少的/ var /日志/安全

其中包含:

Dec 9 05:58:20 ... sshd[29816]: Authentication refused: 
    bad ownership or modes for directory /home/ec2-user 

这固定通过发出命令:

$搭配chmod OG-RWX /家庭/ EC2用户

我希望这可以帮助了别人。

12

请注意,重新启动实例后,dns名称已更改。我倒了好几次。密钥文件仍然有效,但“服务器名称”已更改。

1

确保您的私钥路径正确。

如果你的SSH客户端找不到你要提供的私钥,奇怪的是它不会给你一个错误!它只是不会使用该密钥。它将使用你在.ssh/id_dsa和.ssh/id_ecdsa下的任何密钥,这当然会使公钥验证昏迷。

28

这是发生在我身上,因为我没有使用正确的用户名。我在使用教程中使用的AMI时能够登录,但是当我试图使用不同的AMI(Bitnami的ubuntu + LAMP)时,我会得到Permission denied (public key).错误。我终于意识到,如果我将教程ami的用户名从ubuntu更改为ec2-user,我会得到相同的错误。

因此,快速谷歌告诉用户Bitnami AMIs的用户名是bitnami。问题解决了。

3

谢谢!

我真的很欣赏@特雷弗的答案在这里。我现在要添加这个小技巧来避免将来出现这个问题。

便利

因为你要创建一个不同的密钥对每一个可用性区域,它变得相当麻烦来管理所有这些,使用它们的命令。随着~/.ssh/config我的ssh命令,正确的安装是非常简单:

ssh ec2-52-10-20-30.us-west-2.compute.amazonaws.com 

这是在美西2可用性区域中的服务器的完整公共DNS。正确的用户名和密钥选择,因为这样的:

## ~/.ssh/config 

Host *.us-west-2.compute.amazonaws.com 
    User ec2-user 
    IdentityFile ~/.ssh/bruno-bronosky-aws-us-west-2.pem 
0

我花了一整天的答案搜索互联网。我的问题完全一样。我摆弄许可问题,来回改变,但没有解决我的问题。 使用新密钥测试并开始/终止一对实例后,最后我发现它必须在不同地区使用相同的密钥名称。

这是“权限被拒绝(公钥)”怎么发生的对我说:
1.按照练习册,选择美国东-1作为默认区域
2.创建一个键名“的myKey”
通过下面的例子来探索AWS世界。
4.有一天,尝试测试悉尼区的速度,默认开启到悉尼区。
5.创建另一个密钥,将其命名为“mykey”,而不用考虑,但不要用它通过cli连接数天。
6.尝试使用cli连接到AWS。
7.得到“权限被拒绝(公钥)”。
8.花了很多时间来调试SSH问题,直到我注意到键/区域问题。

希望这可以帮助像我这样的新手。

为了避免这个问题,我认为命名密钥的最佳做法是在其中附加一个区域。

0

我还收到:Permission denied。

我用:

ssh -v -i ~/.ssh/pemfile [email protected] 

和反应是:

debug1: No more authentication methods to try. 

输入以下命令:

ssh-add -l 

但反应是空

所以,我觉得笔文件是这样的对格式错误。 接下来,我找到了从ec2 web下载的笔文件,并将其移动过来。在此之前,我创建了一个新的文件,并解析从下载PEM文件文本目录“的.ssh”,则:

ssh-add filename 

这是成功的。

1

如果EC2实例使用Ubuntu ami 14.04。尝试在EC2实例ip之前添加'ubuntu @'。

ssh -i [key name] [email protected][EC2 instance ip] 
0

我将权限更改为600,尽管pem文件的权限已经是644。这工作:p希望它可以帮助

相关问题