首页 文章

尝试SSH到Amazon Ec2实例 - 权限错误

提问于
浏览
586

这对某些人来说可能是一个非常简单的问题:)

我在Amazon EC2上创建了一个新的linux实例,并且作为其中一部分下载了.pem文件以允许我进入SSH .

当我试图ssh:

ssh -i myfile.pem <public dns>

我有:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

this post之后我尝试chmod 600 pem文件,但现在当我ssh我得到:

Permission denied (publickey).

我在这里做的男生错误是什么? .pem文件位于我的主文件夹中(在osx中) . 它的权限如下所示:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem

26 回答

  • 6

    此错误仅是因为许可 .

    只需给予许可600

    #chmod 600 pemfilepath

  • 26

    我知道这场比赛已经很晚了......但是 always 适合我:

    步骤1

    ssh-add ~/.ssh/KEY_PAIR_NAME.pem
    

    第2步,只需ssh in :)

    ssh user_name@<instance public dns/ip>
    

    例如

    ssh ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
    

    希望这有助于某人 .

  • 2

    这个错误背后有三个原因 .

    • 您使用的是错误的密钥 .

    • 您的密钥没有正确的权限 . 你需要chmod到400 .

    • 您使用的是错误的用户 . Ubuntu图像有一个用户 ubuntu ,亚马逊的AMI是 ec2-user ,debian图像有 rootadmin

  • 2

    我看到这个问题背后有两个原因

    1)访问密钥没有权限 . 具有默认权限的pem密钥不允许 Build 安全连接 . 您只需更改权限:

    chmod 400 xyz.pem

    2)还要检查您是否使用正确的用户凭据登录 . 否则,在连接时使用sudo

    sudo ssh -i ec2-user @ {远程主机的IP地址}

  • 14

    默认情况下,权限不允许pem键 . 您只需更改权限:

    chmod 400 xyz.pem

    如果ubuntu实例然后连接使用:

    ssh -i xyz.pem ubuntu@ec2-youraws.amazonaws.com

  • 5

    问题是文件上有错误的mod .

    通过执行轻松解决 -

    chmod 400 mykey.pem

    取自亚马逊的指示 -

    您的密钥文件不能公开查看以使SSH正常工作 . 如果需要,请使用此命令:chmod 400 mykey.pem

  • 1

    ssh -i /.pem user @ host-machine-IP

    我认为这是因为您输入了错误的凭据,或者您使用的是公钥而不是私钥,或者您的端口权限对所有人都是开放的 . 这对亚马逊来说很糟糕 .

  • 1

    做一个chmod 400 yourkeyfile.pem如果你的实例是亚马逊linux然后使用ssh -i yourkeyfile.pem ec2-user @ ip for ubuntu ssh -i yourkeyfile.pem ubuntu @ ip for centos ssh -i yourkeyfile.pem centos @ ip

  • 0

    那么,看看你的帖子描述我觉得你做了2个错误: -

    • Set correct permissions for the private key . 下面的命令可以帮助您设置正确的文件permision .

    chmod 0600 mykey.pem

    • Wrong ec2 user you are trying to login .

    查看调试日志,我认为您已经生成了一个Amazon Linux实例 . 该实例类型的默认用户是 ec2-user . 如果实例是ubuntu那么你的默认用户就是 ubuntu .

    ssh -i privatekey.pem default_ssh_user@server_ip

    注意:
    对于Amazon Linux AMI,默认用户名为ec2-user .

    对于Centos AMI,默认用户名是centos .

    对于Debian AMI,默认用户名是admin或root .

    对于Fedora AMI,默认用户名是ec2-user或fedora .

    对于RHEL AMI,默认用户名是ec2-user或root .

    对于SUSE AMI,默认用户名是ec2-user或root .

    对于Ubuntu AMI,默认用户名是ubuntu .

    否则,如果ec2-user和root不起作用,请与AMI提供商联系 .

    来源:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

  • 37

    除了其他答案之外,以下是我为此工作所做的事情:

    • 如果您还没有将密钥复制到.ssh文件夹:

    cp key.pem ~/.ssh/key.pem

    • 为密钥授予适当的权限

    chmod 400 ~/.ssh/key.pem

    evalssh-agent -sssh-add

    • 然后,添加密钥

    ssh-add ~/.ssh/key.pem

    现在你应该能够ssh EC2(:

  • 1

    解决这个问题的方法是将.pem文件移到apps目录中 . Soo说fooapp是我的应用程序的名称 . 我把它直接放在那里 .

  • 4

    看看this article . 您不使用公共DNS,而是使用表单

    ssh -i your.pem root@ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com
    

    名称在AMI面板上可见的位置

  • 55

    使用以下命令更改密钥文件的权限:

    chmod 400 key-file-name.pem
    

    请参阅AWS文档以连接到实例:

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

  • 251

    这只是你的aws pem键的权限问题 .

    只需使用以下命令将pem键的权限更改为400即可 .

    chmod 400 pemkeyname.pem
    

    如果您没有权限更改文件的权限,可以使用sudo,如下面的命令 .

    sudo chmod 400 pemkeyname.pem
    

    我希望这应该工作正常 .

  • 3

    密钥文件不应公开可见,因此请使用权限400

    chmod 400 keyfile.pem
    

    如果上面的命令显示权限错误使用

    sudo chmod 400 keyfile.pem
    

    现在ssh进入ec2机器,如果你仍然遇到问题,请使用 ec2-user

    ssh -i keyfile.pem ec2-user@ec2-12-34-56-78.compute-1.amazonaws.com

  • 3

    在Mac终端,做“chmod 400 xyz.pem”并没有帮助我,它一直说许可被拒绝 . 对于ubuntu用户,我建议

    • ssh-add xyz.pem

    • ssh -i xyz.pem ubuntu@ec2-54-69-172-118.us-west-2.compute.amazonaws.com (注意用户是Ubuntu的)

  • 2

    您可能使用错误的用户名登录:

    • 大多数Ubuntu图片都有一个用户 ubuntu

    • 亚马逊的AMI是 ec2-user

    • 大多数Debian图像都有 rootadmin

    要登录,您需要调整ssh命令:

    ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-host
    

    HTH

  • 0

    我知道这个问题已经得到了回答,但对于那些尝试过这些问题的人来说,你仍然会得到令人讨厌的“Permission denied(publickey)” . 尝试使用SUDO运行命令 . 当然这是一个临时解决方案,您应该正确设置权限,但至少可以让您确定当前用户没有以您需要的权限运行(如您所假设的那样)

    sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

    一旦你这样做,你会收到这样的消息:

    Please login as the user "ec2-user" rather than the user "root"

    这也很少记录 . 在这种情况下,只需这样做:

    sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

    你会得到光荣的:

    __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|
    
  • 1

    对我来说问题是我的.pem文件在我的一个NTFS分区中 . 我把它移到我的linux分区(ext4) .

    通过运行获得所需的权限:

    chmod 400 my_file.pem

    它奏效了 .

  • 1

    使用PuTTY替代登录 . 它很好,但需要几步 .

    • 获取首次制作EC2实例时生成的.pem .

    • 使用PuttyGen转换.pem文件.ppk,因为PuTTY不读取.pem .

    • 打开PuTTY并输入 Host Name ,这是您的实例用户名Public DNS(例如:ubuntu @ ec2-xxx-xxx-xxx-xxx.region.compute.amazonaws.com) . 不是您的AWS账户用户名 .

    • 然后导航到 Connection > SSH > Auth . 然后添加 .ppk 文件 . 点击浏览"Private key file for authentication" .

    • 单击“打开”,您应该能够立即 Build 连接 .

    我在Windows中使用PuTTY 0.66 .

  • 3

    在Windows中,您可以转到pem文件的属性,然后转到安全选项卡,然后转到提前按钮 .

    删除继承和所有权限 . 然后给自己完全控制 . 毕竟SSL不会再给你同样的错误 .

  • 1

    SSH密钥和文件权限最佳实践:

    • .ssh目录 - 0700(仅限所有者)

    • 私钥/ .pem文件 - 0400(由所有者只读)

    • 公钥/ .pub文件 - 0600(仅由所有者读写)

    chmod XXXX file/directory

  • 0

    好的,对我有用的唯一一件事是:

    • 更改密钥的权限

    chmod 400 mykey.pem

    • 确保使用 ec2-user 和正确的ec2-99 ...地址登录 . 当您登录并查看列出的实例时,ec2-99地址位于aws控制台的底部

    ssh -i mykey.pem ec2-user@ec2-99-99-99-99.compute-1.amazonaws.com

  • -2

    清单:

    • 您使用的是私钥.pem文件吗?

    • 其权限设置正确吗? (我的亚马逊品牌AMI使用644,但红帽必须至少600或400.不知道Ubuntu . )

    • 您是否在ssh系列中使用了正确的用户名?亚马逊品牌=“ec2-user”,Red Hat =“root”,Ubuntu =“ubuntu” . 用户可以指定为“ssh -i pem usename @ hostname”或“ssh -l username -i pem hostname”

  • 0

    以下是Linux用户使用.pem文件连接服务器的简单步骤:

    步骤1:到pem文件的位置并将其复制到home .ssh位置 .

    cp example.pem ~/.ssh/example.pem
    

    第2步:更改权限

    chmod 400 ~/.ssh/example.pem
    

    步骤3:运行以下命令

    ssh -i ~/.ssh/example.pem ec2-user@host.com
    

    由于此命令太长,因此您可以使用以下命令创建此别名:

    vim ~/.bashrc
    

    最后以下面的方式写相同的命令 .

    alias sshConnect='ssh -i ~/.ssh/example.pem ec2-user@host.com'
    

    现在重新启动系统并使用 sshConnect 连接您的服务器 .

  • 1146

    只需将pem文件的权限更改为0600,仅允许允许的用户,它将像魅力一样工作 .

    sudo chmod 0600 myfile.pem
    

    然后尝试ssh它将完美地工作 .

    ssh -i myfile.pem <<ssh_user>>@<<server>>
    

相关问题