Ssh 亚马逊EC2权限被拒绝(公钥)
这似乎是一个常见的问题,但我的具体情况似乎有点不同 我使用命令行工具设置了一个新的AmazonEC2实例,并通过SSH连接,还做了一些配置工作 但是,最初,我无法使用ssh连接到实例,我必须停止并重新启动实例,然后才能连接。在重新启动之前,我刚刚得到了回复Ssh 亚马逊EC2权限被拒绝(公钥),ssh,amazon-web-services,amazon-ec2,Ssh,Amazon Web Services,Amazon Ec2,这似乎是一个常见的问题,但我的具体情况似乎有点不同 我使用命令行工具设置了一个新的AmazonEC2实例,并通过SSH连接,还做了一些配置工作 但是,最初,我无法使用ssh连接到实例,我必须停止并重新启动实例,然后才能连接。在重新启动之前,我刚刚得到了回复 Permission denied (publickey). 那是昨天晚上,今天早上我回到同一个例子,现在我得到的是 Permission denied (publickey). 我尝试重新启动该实例,但毫无乐趣 有人能给我指一下正确的方
Permission denied (publickey).
那是昨天晚上,今天早上我回到同一个例子,现在我得到的是
Permission denied (publickey).
我尝试重新启动该实例,但毫无乐趣
有人能给我指一下正确的方向吗?昨晚使用的同一命令不再有效,我正在从我的Macbook Pro连接。我将回答我自己的问题,以防其他人看到相同的东西。。。昨晚我做了:
ssh-add ~/.ssh/[keypair name]
然后一直在联系:
ssh ec2-user@[ec2 instance ip]
今天早上我尝试了同样的方法,但无法连接。但是做
ssh -i ~/.ssh/[keypair name] ec2-user@[ec2 instance ip]
让我进去
在密钥对上再次使用
ssh add
,可以让我加入。我猜ssh add
只能在我发布它的shell中工作。当我关闭“终端”窗口并打开另一个窗口时,我不再有没有明确的密钥对可用。我遇到了类似的问题,结果是主文件夹的权限问题。谢天谢地,我仍然打开了另一个现有ssh连接,因此我能够检查ec2实例上的日志:
$sudo less/var/log/secure
其中包括:
Dec 9 05:58:20 ... sshd[29816]: Authentication refused:
bad ownership or modes for directory /home/ec2-user
通过发出以下命令修复了此问题:
$chmod og rwx/home/ec2用户
我希望这对其他人有所帮助。请注意,重新启动实例后,dns名称发生了更改。我好几次爱上了这个。密钥文件仍然有效,但“服务器名”已更改。请确保私钥的路径正确
如果您的ssh客户端找不到您试图提供的私钥,奇怪的是,它不会给您一个错误!它就是用不到那把钥匙。它将使用您在.ssh/id_dsa和.ssh/id_ecdsa下拥有的任何密钥,这当然会减弱公钥身份验证。这对我来说是因为我没有使用正确的用户名。当我使用教程中使用的AMI时,我可以登录,但当我尝试使用不同的AMI(来自Bitnami的ubuntu+LAMP)时,我会得到
权限拒绝(公钥)。
错误。我终于意识到,如果我将教程ami的用户名从ubuntu
更改为ec2 user
,我将得到相同的错误
因此,快速搜索一下google就会知道Bitnami AMIs的用户名是
Bitnami
。问题解决了 我通过将~/.ssh/id_rsa.pub的内容复制到EC2实例上的~/.ssh/authorized_密钥来解决这个问题
文件中对此进行了规定:
然后我可以使用以下命令进行ssh:
ssh ec2-user@[ip.address]
非常感谢。
我真的很感谢@Trevor的回答。我将添加这个小技巧,我现在使用它来避免将来出现这个问题
方便
因为您必须为每个可用性区域创建不同的密钥对,所以管理它们以及使用它们的命令变得相当麻烦。通过在~/.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
我花了一整天在互联网上寻找答案。我的问题完全一样。我摆弄着许可证的问题,来回改变,但没有人解决我的问题。 在使用一个新密钥进行测试并启动/终止几个实例之后,最后我发现它与不同区域中的相同密钥名有关 这就是“权限被拒绝(公钥)”发生在我身上的方式:
1.按照实践手册,选择us-east-1作为默认区域
2.创建密钥名称“mykey”
3.按照书中的例子探索AWS世界
4.有一天,尝试测试悉尼赛区的速度,切换到悉尼赛区作为默认启用。
5.不假思索地创建另一个密钥,命名为“mykey”,但在几天内不要使用它通过cli进行连接。
6.尝试使用cli连接到AWS。
7.已获得“权限被拒绝(公钥)”。
8.花了很多时间调试ssh问题,直到我注意到密钥/区域问题。
希望这能帮助像我这样的新手
为了避免此问题,我认为命名密钥的最佳做法是在其中附加一个区域。我还收到:权限被拒绝 我用过:
ssh -v -i ~/.ssh/pemfile ec2-user@xx.xx.xx.xx
答复是:
debug1: No more authentication methods to try.
输入命令:
ssh-add -l
但回答是空的
所以,我认为钢笔文件的格式有问题。
接下来,我找到了从EC2Web下载的pen文件,并将其移到上面。在此之前,我创建了一个新文件,并将下载的pem文件中的文本解析到目录“.ssh”,然后:
这是成功的。如果EC2实例使用Ubuntu ami 14.04。尝试在EC2实例ip之前添加“ubuntu@”
ssh -i [key name] ubuntu@[EC2 instance ip]
我将权限更改为600,尽管pem文件上的权限已经是644。这是有效的:p希望它有帮助。有同样的问题,这里是你应该做的。 首先,如果您有Windows,请使用Babun命令行,它与Linux命令行类似。 有了该命令行后,打开它并键入
ssh-i[密钥对路径][用户名]@[EC2公共IP]。
要查找密钥对的路径,请转到存储密钥的文件,按住shift键并单击鼠标右键,然后单击“复制路径”,然后将其粘贴到上面命令中路径所在的位置。您可能会在粘贴的路径外侧得到“”标记,并出现\反斜杠。删除“”标记并将\反斜杠替换为常规斜杠/。这在我遇到的这种情况下起了作用,祝您好运。从cli连接到EC2有点棘手,至少第一次是这样。 如果你去` 服务->计算->EC2->运行实例>,然后选择 您想要ssh->connec的实例
ssh -i [key name] ubuntu@[EC2 instance ip]
Permission denied (publickey).