我想使用我的Amazon ec2实例,但遇到以下错误:
Permission denied (publickey).
我创建了密钥对并下载了 .pem 文件。
鉴于:
chmod 600 pem file.
然后,这个命令
ssh -i /home/kashif/serverkey.pem ubuntu@ec2-54-227-242-179.compute-1.amazonaws.com
但是有这个错误:
Permission denied (publickey)
另外,如何连接filezilla上传/下载文件?
答案 0 :(得分:589)
此错误消息表示您无法进行身份验证。
这些是造成这种情况的常见原因:
ubuntu
是基于ubuntu的AWS发行版的用户名,但根据Bogdan Kulbida的回答,在其他一些发行版上ec2-user
(或admin
对某些Debian来说)(也可以是root
},fedora
,见下文)请注意,如果您弄乱了EC2实例上的1.
文件,也会发生/home/<username>/.ssh/authorized_keys
。
关于2.
,有关您应该使用哪个用户名的信息通常缺少AMI图像说明。但是您可以在AWS EC2文档中找到一些项目,项目符号4.
:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html
使用ssh命令连接到实例。您将指定私钥(.pem)文件和user_name @ public_dns_name。对于Amazon Linux,用户名为ec2-user。对于RHEL5,用户名为root或 ec2-user 。对于Ubuntu,用户名为 ubuntu 。对于Fedora,用户名是 fedora 或 ec2-user 。对于SUSE Linux,用户名为 root 。否则,如果ec2-user和root不起作用,请咨询您的AMI提供商。
最后,请注意,身份验证失败还有很多其他原因。如果您需要将-v
选项添加到SSH命令并读取输出,SSH通常会明确指出出现了什么问题,正如此问题的许多其他答案中所解释的那样。
答案 1 :(得分:48)
在这种情况下,问题是由丢失密钥对引起的。关于这个:
您可以按照以下步骤操作:
通常,请记住您必须允许EC2实例接受入站SSH流量。
为此,您必须为EC2实例的安全组创建特定规则。 您可以按照以下步骤操作。
希望这可以帮助有人帮助我。
答案 2 :(得分:43)
这就是我解决问题的方法
ssh -i <key> ec2-user@<ec2 ip>
答案 3 :(得分:26)
我解决了问题,只是将sudo
放在
sudo ssh -i mykey.pem myec2.amazonaws.com
但正确的解决方案是首先更改所有权,然后像Janus Troelsen所说的那样以普通用户身份进行连接。在我的情况下,它将是:
chown wellington:wellington key.pem
答案 4 :(得分:23)
尝试使用
sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>
OR
sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>
答案 5 :(得分:22)
此错误的另一个可能原因:
当用户的主目录是可写组时,用户无法登录。
(在Ubuntu实例上转载。)
答案 6 :(得分:7)
您需要执行以下步骤:
cd <path to your .pem file>
chmod 400 <filename>.pem
ssh -i <filename>.pem ubuntu@<ipaddress.com>
如果ubuntu
用户无效,请尝试使用ec2-user
。
答案 7 :(得分:7)
对于ubuntu 12.04 lts micro实例我必须将用户名设置为选项
ssh -i pemfile.pem -l ubuntu dns
答案 8 :(得分:5)
由于
,我在同样的权限被拒绝错误中挣扎key_parse_private2: missing begin marker
在我的情况下,原因是当前用户的ssh配置文件(〜/ .ssh / config)。
使用以下内容:
ssh -i ~/myKey.pem ec2-user@<IP address> -v 'exit'
初始输出显示:
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
......许多调试线在这里切割......
debug1: Next authentication method: publickey
debug1: Trying private key: /home/ec2-user/somekey.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
上面的第三行是确定问题的实际情况;但是,我在调试消息中查找了从底部开始的四行(上图)并被误导了。密钥没有问题,但我测试了它并比较了其他配置。
我的用户ssh配置文件通过非预期的全局设置重置主机,如下所示。第一个主机行不应该是评论。
$ cat config
StrictHostKeyChecking=no
#Host myAlias
user ec2-user
Hostname bitbucket.org
# IdentityFile ~/.ssh/somekey
# IdentitiesOnly yes
Host my2ndAlias
user myOtherUser
Hostname bitbucket.org
IdentityFile ~/.ssh/my2ndKey
IdentitiesOnly yes
我希望其他人觉得这很有帮助。
答案 9 :(得分:4)
我忘了在连接我的Ubuntu实例时添加用户名(ubuntu)。所以我尝试了这个:
ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com
并且正确的方法是
ssh -i /path/my-key-pair.pem ubuntu@my-ec2-instance.amazonaws.com
答案 10 :(得分:3)
这发生在我身上多次。我使用的是Amazon Linux AMI 2013.09.2和Ubuntu Server 12.04.3 LTS,它们都是免费的。
每次我发布一个实例时,我都会被拒绝显示。我还没有验证这一点,但我的理论是在尝试ssh之前服务器没有完全设置。经过几次尝试拒绝许可后,我等了几分钟然后我才能连接。如果你遇到这个问题我建议等五分钟再试一次。
答案 11 :(得分:2)
我一直在努力,直到找到以下内容:
eb ssh
当你从项目目录中使用它时,bingo-bango没有大惊小怪,你在
答案 12 :(得分:2)
就我个人而言,我做了以下事情:
chmod 400 <key.pem>
ssh -i <key.pem> ec2-user@ec2_public_dns (for debian)
我最初使用的是root@
部分,我得到了这个提示:
Please login as the user "ec2-user" rather than the user "root".
答案 13 :(得分:2)
同样的事情发生在我身上,但所有发生的事情都是私钥从我本地机器的钥匙串上丢失了。
ssh-add -K
重新添加密钥,然后连接的ssh命令恢复工作。
答案 14 :(得分:2)
以下是可能导致此错误的令人沮丧的情况:
如果您正在从另一个实例(例如实例xyz)创建的AMI中获取新实例,则新实例将只接受实例A使用的相同密钥。这是完全可以理解的,但它会让人感到困惑,因为在创建新实例的逐步过程中,系统会要求您选择或创建一个不起作用的密钥(在最后一步)。
无论您创建或选择的密钥是什么,新实例都只接受您用于实例XYZ的密钥。
答案 15 :(得分:2)
我在Windows中使用 WinSCP 。它在文件资源管理器和PuTTY SSH Shell上运行良好,可以访问我的Amazon EC2-VPC Linux。与chmod pem file
无关,因为它使用来自 pem文件的converted myfile.ppk
PuTTYgen。
答案 16 :(得分:1)
使用以下命令登录Ubuntu框可以解决此问题:
ssh -i ec2key.pem ubuntu@ec2-public-IP
答案 17 :(得分:1)
我有同样的错误,但情况不同。对我来说,经过很长一段时间我可以成功地将我的远程计算机发送到那里。经过大量搜索后我的问题的解决方案是文件权限。当然很奇怪,因为我没有更改我的计算机或属于ssh文件/目录的远程权限。所以从这里的好archlinux wiki来看:
对于本地机器,请执行以下操作:
$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ecdsa
对于远程机器,请执行以下操作:
$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
之后我的ssh在没有被拒绝(publickey)的情况下再次开始工作。
答案 18 :(得分:1)
这是一个基本的事情,但始终确认您尝试登录的用户。我的情况只是一个分心。我正在尝试使用 root 用户:
ssh -i ~/keys/<key_name> root@111.111.111.111
但其他用户:
ssh -i ~/keys/<key_name> dedeco@111.111.111.111
答案 19 :(得分:1)
我有同样的问题而且非常奇怪。如果你认为你做得很好而不是遵循这个: 有时候EC2实例的用户会感到困惑!!有时候你会得到ec2-user,ubuntu,centos等。所以检查你的用户名是否有机会!!
以root用户身份登录
ssh -i yourkey.pem (400 permission) root@<ip>
会抛出错误,并会为您提供可用的用户名。然后使用该用户登录。
答案 20 :(得分:1)
当您尝试
时 ssh -i <.pem path> root@ec2-public-dns
您收到一条消息,建议您使用ec2-user
。
Please login as the user "ec2-user" rather than the user "root".
所以使用
ssh -i <.pem path> ec2-user@ec2-public-dns
答案 21 :(得分:1)
我的私钥设置为权限5
,导致权限被拒绝将其设置为'644'帮助了我。
key_load_private_type:权限被拒绝是我遇到的具体错误
<强>解决方案:强>
400
注意:设置为644是必须的,它不适用于400
答案 22 :(得分:1)
你必须检查以下几点:
我遇到了同样的问题,我将用户名更改为ubuntu后解决了问题。在AWS文档中提到了用户ec2-user但不知何故对我不起作用。
答案 23 :(得分:1)
我已经两次拥有密钥和ssh命令行正确(我知道因为我正在复制正在运行的Ubuntu 14.04实例),但是即使在按照Wade的建议等待5分钟后也无法进入新实例安德森上面。
我必须销毁并重新创建机器。这发生在两个不同的场合。由于我最初无法进入,我看不出有什么问题。
所以,如果你有这个问题,试试吧。
答案 24 :(得分:0)
另一个可能的问题:登录ID错误
检查&#39;使用说明&#39;
上面所有好的建议,但我遇到的是我选择了一个预先制作的实例。实例启动后,请查看使用说明。我在错误地使用私钥的登录ID时,我应该使用&bit;比特纳&#39; bitnami&#39; (例如bitnami @ domain -i key.pem)
答案 25 :(得分:0)
我有类似的错误
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: xxxx.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
我的问题是,由于Step 3: Configure instance detail
下Advanced details:
下的{8}的运行启动脚本出错,实例无法正常启动
我以为我输入了什么:
#include
https://xxxx/bootstrap.sh
实际输入内容会破坏实例设置
#include
https://xxxx/bootstrap.sh
因此,未创建实例端的公钥
答案 26 :(得分:0)
它区分大小写。
错误:SSH EC2-user @ XXX.XX.XX.XX -i MyEC2KeyPair.pem
正确:SSH ec2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem
答案 27 :(得分:-1)
我能够从一台机器上SSH,但不能从另一台机器上SSH。结果我使用了错误的私钥。
我解决这个问题的方法是从我的私钥获取公钥,如下所示:
ssh-keygen -y -f ./myprivatekey.pem
出现的内容与EC2实例中~/.ssh/authorized_keys
的内容不匹配。
答案 28 :(得分:-1)
以上所有排名靠前的答案都是准确的,适用于大多数情况。如果他们不像我的情况那样,我只是在我试图ssh的机器上摆脱我的~/.ssh/known_hosts
文件,这解决了我的问题。之后我能够连接。