【问题标题】:Can't ssh to AWS EC2: Identity file not accessible无法通过 ssh 连接到 AWS EC2:无法访问身份文件
【发布时间】:2013-06-06 22:38:04
【问题描述】:

我无法通过 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

文件肯定在目录中,我已将目录更改为 755,将文件更改为 600:

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

我很确定这是权限问题,但不知道为什么...

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

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 user@server.ip.address -i identity_file.pem

标签: ssh amazon-ec2 ubuntu-12.04


【解决方案1】:

从 Windows 环境连接时,我的诀窍是将路径放在引号 " 中,如下所示:

ssh -i "C:\Users\XXXX\Desktop\XXXX\testing_amazon_linux.pem" ubuntu@XXXX.amazonaws.com

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

【讨论】:

    【解决方案2】:

    这很奇怪,但在我的情况下,我是从一条松弛消息中复制命令并且反复导致此错误,即使我满足了上述所有要求。键入整个命令而不从剪贴板复制任何内容对我有用。在此处发布此内容,希望有一天对某人有所帮助。

    【讨论】:

    • 对我来说也是一样的情况。我认为曾经笔记是我的罪魁祸首。
    • 我在尝试连接远程 EC2 机器时忘记在末尾添加 .pem。请仔细检查。
    【解决方案3】:

    发生此错误的原因有多种。 1 您试图从任何不匹配的路径访问 2 要么您没有访问权限 3 如果您无权访问该特定文件,您可以尝试更改权限模式

    像上面的解决方案

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

    即使没有,您也可以与管理您的云服务器的网络或您的云团队进行协调

    【讨论】:

      【解决方案4】:

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

      (我是中国人,使用中文窗口,当我从包含中文字符的路径运行命令时,它将返回“警告:无法访问身份文件 debao-visa.pem:没有这样的文件或目录.")

      【讨论】:

        【解决方案5】:

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

        我必须更新这个文件

        /Users/MrRobot/.ssh/config

        文件中有如下配置。

        身份文件 xx.pem

        无论您的 id_rsa 或 pem 文件在哪里,我都必须将其更新为完整路径。

        身份文件 /Users/MrRobot/.ssh/xx.pem

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            在多次尝试失败后,这对我有用。

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

                我有同样的问题,我发现文件路径的问题。 右键单击您的 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
                

                【讨论】:

                  【解决方案10】:

                  只适合你的情况

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

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

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

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

                  【讨论】:

                    【解决方案11】:

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

                    【讨论】:

                    • 这对我来说是个问题。我从evernote(最初来自Windows)复制了命令并将其从mac上的evernote复制出来。为了摆脱这些字符,我将命令字符串发送给自己。之后,它起作用了。
                    • 这似乎也是我的问题。我只是手动输入命令,而不是简单地从 AWS 复制/粘贴它们。
                    • 这发生在我身上。我使用印象笔记网络。
                    【解决方案12】:

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

                    【讨论】:

                    • 取决于系统,在 Linux 中,您可以使用/home/(user)/.ssh/(identify_file) 并运行它,而不管当前的工作路径如何。
                    • @metame 所以当你在“Linux”中说你的范围有多宽?就像你的意思是在'nix系统中?我问,因为我在 os x 上也遇到了同样的问题。我尝试使用 pem 进行 sshing,就像我“几乎”通常做的那样……但是……我不在我的主目录中。一旦我切换到我的主目录并将我的命令编辑为ssh -i '.ssh/blah.pem' ..,它就会像往常一样工作。我本可以发誓我以前做过这个……我知道我在各种目录中使用过 pem 文件从来都不是问题。那么,为什么 /home/user/.ssh/blah.pem 没有工作但在用户目录中呢?
                    【解决方案13】:

                    尝试使用

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

                    而不是

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

                    【讨论】:

                      【解决方案14】:

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

                      ssh -i (identity_file) username@hostname
                      

                      【讨论】:

                      • 嗨,我已经用命令更新了我的问题(我按照你的解释使用它)
                      【解决方案15】:

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

                      ssh -i (identity_file) username@hostname"
                      

                      这对我有用。只写文件名(不带任何斜线),与要求您输入的 Amazon EC2 教程不同:

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

                      将身份文件放在家庭的 .ssh(隐藏)文件夹中后,它对我有用。要查看家中的隐藏文件夹,请使用ctrl+h

                      【讨论】:

                      • 这有助于解决我尝试在 OSX 中运行 mosh 的问题。 mosh --ssh="ssh -v -i privkey" usr@server
                      • 这帮助我在运行chmod 400 (identity_file),然后使用正确的用户名AWS Usernames
                      猜你喜欢
                      • 2021-12-06
                      • 2019-08-08
                      • 1970-01-01
                      • 1970-01-01
                      • 2021-11-22
                      • 2013-01-06
                      • 2012-09-04
                      • 2017-03-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多