首页 文章

SSH访问Amazon EC2实例时权限被拒绝(publickey)[关闭]

提问于
浏览
355

我想使用我的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)

另外, how can I connect with filezilla to upload/download files?

29 回答

  • 0

    同样的事情发生在我身上,但所有发生的事情都是私钥从我本地机器的钥匙串上丢失了 .

    ssh-add -K

    重新添加密钥,然后ssh命令连接返回工作 .

  • 2

    尝试使用

    sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>
    

    要么

    sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>
    
  • 1

    我的私钥被设置为权限 400 并导致权限被拒绝将其设置为'644'帮助了我 .

    key_load_private_type: Permission denied 是我得到的具体错误

    Solution: Sudo chmod 644 <key.pem>

    注意:必须设置为644,它不能与400一起使用

  • 2

    我能够从一台机器SSH,但不能从另一台机器SSH . 结果我使用了错误的私钥 .

    我想出来的方法是从我的私钥获取公钥,如下所示:

    ssh-keygen -y -f ./myprivatekey.pem

    出来的内容与EC2实例中 ~/.ssh/authorized_keys 中的内容不匹配 .

  • 1

    这发生在我身上多次 . 我使用的是Amazon Linux AMI 2013.09.2和Ubuntu Server 12.04.3 LTS,它们都是免费的 .

    我每次启动一个实例时都会被拒绝显示 . 我没有验证这一点,但我的理论是在我尝试ssh之前服务器没有完全设置 . 经过几次尝试拒绝后,我等了几分钟,然后我才能连接 . 如果你遇到这个问题我建议等五分钟再试一次 .

  • 4

    我显然因为相同的许可拒绝错误而挣扎

    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
    

    我希望其他人觉得这很有帮助 .

  • 22

    另一个可能的问题:登录ID错误

    查看'使用说明'

    以上所有好的建议,但我遇到的是我选择了一个预先制作的实例 . 实例启动后,请查看使用说明 . 我错误地使用私钥的登录ID时,我应该使用'bitnami'(例如bitnami @ domain -i key.pem)

  • 589

    我也挣扎了一段时间,直到找到以下内容:

    eb ssh
    

    当你从项目目录中使用它时,bingo-bango没有大惊小怪,你在

  • 7

    这是一个基本的事情,但始终确认您尝试登录的用户 . 我是我的情况 was just a distraction . 我正在尝试使用 root 用户:

    ssh -i ~/keys/<key_name> root@111.111.111.111
    

    但是 another user

    ssh -i ~/keys/<key_name> dedeco@111.111.111.111
    
  • 1

    我之前把 sudo 解决了问题

    sudo ssh -i mykey.pem myec2.amazonaws.com
    

    但正确的解决方案是首先更改所有权,然后像Janus Troelsen所说的那样以普通用户身份进行连接 . 在我的情况下,它将是:

    chown wellington:wellington key.pem
    
  • 43

    您需要执行以下步骤:

    • 如果您使用的是Linux,请打开您的ssh客户端或终端 .

    • 找到您的私钥文件并更改目录 .
      cd <path to your .pem file>

    • 执行以下命令:
      chmod 400 <filename>.pem
      ssh -i <filename>.pem ubuntu@<ipaddress.com>

    如果 ubuntu 用户无法正常工作,请尝试使用 ec2-user .

  • 3

    这就是我解决问题的方法

    ssh -i <key> ec2-user@<ec2 ip>
    
  • 1

    在这种情况下,问题出现在丢失的密钥对上 . 对这个:

    • There's no way to change Key Pair on an instance . 您必须创建一个使用新密钥对的新实例 .

    • You can work around the problem 如果您的实例由 Elastic Beanstalk 上的应用程序使用 .

    您可以按照以下步骤操作:

    • 访问 AWS Management Console

    • 打开 Elastic Beanstalk 标签

    • All Applications 选项卡中选择您的应用程序

    • 从左侧menù选择 Configuration

    • 点击 Instances Gear

    • Server 表格中检查 EC2 Key Pair 输入并选择新的密钥对 . 您可能必须 refresh 列表才能看到刚刚创建的新密钥对 .

    • Save

    • Elastic Beanstalk将为您创建与新密钥对关联的新实例 .


    通常,请记住您必须允许EC2实例接受入站SSH流量 .

    为此,您必须为EC2实例的安全组创建特定规则 . 您可以按照以下步骤操作 .

    • 访问 AWS Management Console

    • 打开 EC2 Tab

    • Instances 列表中选择您感兴趣的实例

    • Description Tab chek中,您的实例正在使用 Security Group 的名称 .

    • 再次在 Description Tab 中单击 View rules 并检查您的安全组是否在端口22上有入站ssh流量规则

    • 如果没有,请在 Network & Security menù中选择 Security Group

    • 选择实例使用的 Security Group ,然后单击 Inbound Tab

    • 在“入站”选项卡的左侧,您可以为SSH入站流量组成规则:

    • Create a new rule :SSH

    • Source :IP地址或要从中访问实例的子网

    • Note :如果您希望无限制地访问您的实例,您可以指定0.0.0.0/0,尽管亚马逊不推荐这种做法

    • 单击 Add Rule 然后 Apply Your Changes

    • 检查您现在是否能够通过SSH连接到您的实例 .

    希望这可以帮助有人帮助我 .

  • 1

    我已经两次使用了密钥和ssh命令行是正确的(我知道因为我正在复制一个正在运行的Ubuntu 14.04实例),但是即使在上面的Wade Anderson建议的等待5分钟之后,也无法进入新的实例 .

    我不得不销毁并重新创造机器 . 这发生在两个不同的场合 . 由于我最初无法进入,我看不出有什么问题 .

    所以,如果你有这个问题,试试吧 .

  • 26

    使用以下命令登录Ubuntu框可以解决此问题:

    ssh -i ec2key.pem ubuntu@ec2-public-IP
    
  • 0

    你必须检查以下几点:

    • 确保您的IP地址正确无误

    • 确保使用正确的密钥

    • 确保使用正确的用户名,您可以尝试:3.1 . 管理员3.2 . ec2-user 3.3 . Ubuntu的

    我有同样的问题,在我将用户名更改为ubuntu后解决了 . 在AWS文档中提到了用户ec2-user,但不知何故对我不起作用 .

  • 2

    我忘了在连接我的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
    
  • 48

    以下是可能产生此错误的令人沮丧的情况:

    如果您正在从另一个实例(例如实例xyz)创建的AMI中获取新实例,则新实例将只接受实例A使用的相同密钥 . 这是完全可以理解的,但它会让人感到困惑,因为在创建新实例的逐步过程中,系统会要求您选择或创建一个不起作用的密钥(在最后一步) .

    无论您创建或选择的密钥如何,新实例都只接受您用于实例XYZ的密钥 .

  • 1

    我有同样的问题而且非常奇怪 . 如果你认为你做得很好而不是遵循这个:有时候EC2实例的用户会感到困惑!有时候你会得到ec2-user,ubuntu,centos等 . 所以检查你的用户名为机器人!!

    Login with root user ssh -i yourkey.pem (400 permission) root@<ip> It will throw error and will give you the available username . 然后使用该用户登录 .

  • 23

    此错误消息表示您无法进行身份验证 .

    这些是导致这种情况的常见原因:

    • 尝试连接错误的密钥 . 你确定这个实例正在使用这个密钥对吗?

    • 尝试使用错误的用户名进行连接 . ubuntu 是基于ubuntu的AWS发行版的用户名,但在其他一些发行版上,根据Bogdan Kulbida的回答,它是 ec2-user (或某些Debian上的 admin )(也可以是 rootfedora ,见下文)

    • 尝试连接错误的主机 . 这是您尝试登录的正确主机吗?

    请注意,如果您在EC2实例上搞乱了 /home/<username>/.ssh/authorized_keys 文件,也会发生 1. .

    关于 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提供商 .

    Finally ,请注意,身份验证失败还有很多其他原因 . 如果你想在你的SSH命令中添加 -v 选项并读取输出,SSH通常非常明确地说明出了什么问题,正如该问题的许多其他答案中所解释的那样 .

  • 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

  • -1

    以上所有排名靠前的答案都是准确的,适用于大多数情况 . 如果他们不像我的情况那样,我只是在我试图ssh的机器上摆脱我的 ~/.ssh/known_hosts 文件,这解决了我的问题 . 之后我能够连接 .

  • 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 detailStep 3: Configure instance detail 的run-on-start-up脚本出错,实例无法正常启动

    我以为我输入了什么:

    #include
 https://xxxx/bootstrap.sh


    实际输入的内容会破坏实例设置

    #include

    ``

    https://xxxx/bootstrap.sh

    因此,实例端的公钥未创建

  • 1

    我在Windows中使用WinSCP . 它在文件资源管理器和PuTTY SSH Shell上运行良好,可以访问我的Amazon EC2-VPC Linux . 与 chmod pem file 无关,因为它使用pem文件中的 myfile.ppk converted来自PuTTYgen .

  • 5

    对于ubuntu 12.04 lts micro实例,我不得不设置用户名作为选项

    ssh -i pemfile.pem -l ubuntu dns
    
  • 2

    这是区分大小写的 .

    错了:SSH EC2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

    正确:SSH ec2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

  • 2

    我有同样的错误但不同的情况 . 对我来说,经过很长一段时间我才能成功地将我的远程计算机发送到那里 . 经过大量搜索后我的问题的解决方案是文件权限 . 这当然很奇怪,因为我没有_321032的文件/目录 . 所以从良好的archlinux wiki这里是:

    对于本地机器这样做:

    $ chmod 700 ~/
    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/id_ecdsa
    

    对于远程机器这样做:

    $ chmod 700 ~/
    $ chmod 700 ~/.ssh
    $ chmod 600 ~/.ssh/authorized_keys
    

    之后我的ssh在没有被拒绝(publickey)的情况下再次开始工作 .

  • -1

    导致此错误的另一个可能原因:

    当用户的 home directory is group writeable 时,用户无法登录 .

    (转载于Ubuntu实例 . )

  • 7

    就我自己而言,我做了以下事情:

    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".
    

相关问题