无法通过 ssh 连接到 AWS EC2:无法访问身份文件



我无法ssh到我的EC2服务器,并得到错误:

ssh -i /Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx
Identity file /Users/Skeniver/Keepass/skeniver.pem not accessible: No such file or directory

文件肯定在目录中,我将目录chmod为755,文件chmod为600:

drwxr-xr-x  14 Skeniver  staff    476 28 Nov  2012 Keepass
-rw-------  1 Skeniver  staff    1696  5 Oct  2012 skeniverkey.pem

我很确定这是一个权限问题,但不明白为什么…

下面是ssh命令使用-v的输出,以防它有任何用处:

Warning: Identity file /Users/Skeniver/Keepass/skeniver.pem not accessible: No such file or directory.
OpenSSH_5.2p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /etc/ssh_config
debug1: Connecting to xx.xxx.xx.xxx [xx.xxx.xx.xxx] port 22.
debug1: Connection established.
debug1: identity file /Users/Skeniver/.ssh/identity type -1
debug1: identity file /Users/Skeniver/.ssh/id_rsa type 1
debug1: identity file /Users/Skeniver/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.2
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'xx.xxx.xx.xxx' is known and matches the RSA host key.
debug1: Found key in /Users/Skeniver/.ssh/known_hosts:8
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/Skeniver/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/Skeniver/.ssh/identity
debug1: Trying private key: /Users/Skeniver/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

需要身份文件才能登录。使用命令:

ssh -i (identity_file) username@hostname"

这对我有用。只写文件名(没有任何斜杠),不像Amazon EC2教程要求您输入:

ssh -i /path/key_pair.pem ec2-user@public_dns_name

它为我工作后,把身份文件在。ssh(隐藏)文件夹在家里。要查看隐藏文件夹在家里,使用ctrl+h

我有类似的问题,发现有隐藏的字符命令,粘贴到纯文本编辑器和复制回来帮助我。

我也有同样的问题。将身份文件存储在我的~/.ssh目录中,并在ssh -i (identity_file) username@hostname工作之前运行cd ~/.ssh。我只是在试图从~/.ssh目录外部运行ssh命令时才遇到这个问题。希望这对你有帮助

对于你的情况

只需执行以下命令更改权限

sudo chmod 400 /Users/Skeniver/Keepass/skeniver.pem

,然后执行将连接到EC2的命令

ssh -i /Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx

我有同样的问题,我发现文件路径的问题。右键单击key_pair。Pem(相同的文件)进入属性并复制,现在你的评论就像

ssh -i /path/skeniver.pem user@your_public_ip

,例如在我的例子中,命令像

ssh -i /home/anil/.ssh/webKey.pem ec2-user@ec2-45-349-50-38.us-west-2.compute.amazonaws.com

chmod 600 ~/.ssh/public_key_file为我解决了

看起来您输入了错误的文件名。您在命令中指定了文件名skeniver.pem,但看起来您的文件名实际上是skeniverkey.pem .

发生此错误的原因有多种。你试图从任何不匹配的路径访问2 .要么你没有权限做访问如果你没有访问该文件的权限,你可以尝试修改权限模式

类似于上面的解决方案

sudo chmod 400 /Users/Skeniver/Keepass/skeniver.pem

即使没有,你也可以与网络或你的云团队协调,无论谁管理你的云服务器

这很奇怪,但在我的情况下,我是从一条slack消息中复制命令,并且反复导致此错误,即使我满足上述所有要求。键入整个命令而不从剪贴板上复制任何内容对我来说都很有效。在这里发布这篇文章,我希望有一天这能帮助到别人。

当从windows环境连接时,我的技巧是将路径放在引号"中,如下所示:

ssh -i "C:UsersXXXXDesktopXXXXtesting_amazon_linux.pem" ubuntu@XXXX.amazonaws.com

我用XXXX替换了可识别的东西,但让其余部分到位,以提高示例清晰度。

从。ssh目录即/Users//运行命令。SSH,然后执行命令SSH -v -i @

在多次失败后,这个方法对我有效。

注意:请确保。pem文件具有必要的权限Chmod 400 <在执行命令>

我在解决相同或类似的问题时到达这里。在尝试了一些事情之后,这对我来说最终是有效的。我在MacBook Pro上,试图使用VSCode远程SSH连接到Ec2 Amazon Linux 2。

我必须更新这个文件

/用户/MrRobot/. ssh/config

文件中有如下配置:

IdentityFile xx.pem

我必须将此更新为id_rsa或pem文件所在的完整路径。

IdentityFile/用户/MrRobot/. ssh/xx.pem

我的解决方案是将它移动到所有英文字符的路径

(我是一个中国人,并且使用中文窗口,当我从包含中文字符的路径运行命令时,它会返回"警告:Identity file debao-visa"。

发生了类似的问题,问题是文件扩展名被隐藏了。

所以真正的文件名是skeniver.pem.txt而不是skeniver.pem

确定这一点的一个简单方法是在输入文件名时按tab键。因此,输入文件名的一部分,如skenive,然后按tab键,它应该在终端中打印文件的其余部分,您应该看到.pem之后是否有.pem.txt等部分。

ssh -i /Users/Skeniver/Keepass/skeniver.pem.txt ubuntu@xx.xxx.xx.xxx

或从名称中删除.txt或任何其他扩展。

你可以尝试不同的想法,我是这样做的。我无法上传到一个文件夹,所以我把上传的文件夹放在"ubuntu@xxx.xxx.xx.xx:/tmp",然后我上传成功,然后在服务器上cp文件。

尝试使用

ssh -i Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx

代替

ssh -i **/**Users/Skeniver/Keepass/skeniver.pem ubuntu@xx.xxx.xx.xxx

您需要身份文件才能登录到该框。使用命令

ssh -i (identity_file) username@hostname

最新更新