通过SSH连接到EC2服务器会出错请以ec2-user用户而不是root用户身份登录

时间:2010-11-20 00:17:20

标签: ssh amazon-ec2

作为标题的问题。 为什么这样,我使用了ssh命令: ssh -i mykey.pem root@xxx-xxx-xx-xx-xxx.compute-1.amazonaws.com 但我得到了这个错误,在谷歌上找不到任何东西。我做错了什么?

9 个答案:

答案 0 :(得分:77)

您以Klaus建议的身份ec2-user登录:

ssh -i key.pem ec2-user@host

...然后使用sudo运行命令。例如,编辑root拥有的/etc/hosts文件并需要root权限:sudo nano /etc/hosts

或者您运行sudo su成为root用户。

答案 1 :(得分:64)

默认情况下,root用户不允许登录,但您可以按其他人的指示使用ec2-user

使用ec2-user登录后,切换到root并更改SSH配置。

成为您运行的root用户:

sudo su -

编辑SSH守护程序配置文件/etc/ssh/sshd_config,例如通过使用vi,并将PermitRootLogin条目替换为以下内容:

PermitRootLogin without-password

运行以下命令重新加载SSH守护程序配置:

/etc/init.d/sshd reload

显示消息Please login as the ec2-user user rather than root user.,因为使用私钥登录时会执行命令。要删除该命令,请编辑~/.ssh/authorized_keys文件并删除command选项。该行应以密钥类型开头(例如,ssh-rsa)。

(*)请自担风险。我建议您始终打开控制台,以防万一您在进行配置更改后无法登录。

供参考,您可以阅读手册页:

man sshd_config
man sshd

答案 2 :(得分:11)

我在Amazon ec2上设置hadoop群集时遇到了类似的问题。

我的头节点需要对每个工作者/从属节点具有root ssh访问权限。我通过将每个从属节点的IP地址,私有地址和别名添加到/etc/hosts/文件来使连接别名。 (我通过运行echo -e "`hostname -i`\t`hostname -f`\talias-name"命令来获取该数据,其中alias-name是我称之为每个节点(例如headn1)。然后我为每个节点输出该输出在每个节点的/etc/hosts文件中。

我遇到的问题是当我在头节点中输入ssh n1 ssh到我的第一个从属节点时,我得到同样的错误消息:Please login as the use "ec2-user" rather than the user "root". 所以在做了一些研究后,我想出了如何解决它。

首先:

  • ssh进入您的服务器。非根(ec2用户)访问在这里很好。
  • 然后su -进入root。现在vi /etc/ssh/sshd_config和 取消对PermitRootLogin yes行的评论。
  • 退出vi编辑器。
  • 现在,通过键入service sshd stop然后service sshd start
  • 重新启动ssh守护程序

第二名:

  • 现在,这是我必须挖掘的部分,
  • 运行vi /root/.ssh/authorized_keys
  • 注释掉ssh-rsa.之前的所有内容。只需在#开头即可 文件的内容,在no-port-forwarding之前...并点击ssh-rsa上的输入以将其移至/etc/hosts 下一行(这样你不必删除任何东西,如果你 想要回溯)。
  • 退出vi编辑

现在您应该能够登录到root,而不会弹出该错误消息。

此外,如果您正在使用别名进行群集设置;在每个节点上重复相同的步骤。首先使用ec2-user ssh然后按照步骤操作。 将IP地址,私有地址和别名信息添加到ssh n1文件后,您应该能够使用别名来搜索每个节点的根目录,例如{{1}}。

我遵循的教程是:https://www.youtube.com/watch?v=xrxQXfE7t9A

但它没有用root登录讨论这个问题。

希望有所帮助!它对我有用。

*请记住,我曾担心任何安全问题。这只是一个练习/开发设置。

答案 3 :(得分:7)

我认为这只是要求您使用其他用户名登录。您碰巧有一个名为ec2-user的用户吗?如果是这样,请尝试这样做:

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

答案 4 :(得分:1)

当我尝试访问我的EC2实例时,我遇到了同样的问题' root'通过Windows PuTTY客户端,这就是我解决问题的方法。

  1. 访问和编辑SSH配置文件,允许root登录密码验证。

    • 以ec2-user身份登录(默认允许)
    • 输入以下命令以打开ssh config

      sudo vi /etc/ssh/sshd_config

    • 使用vi,how to use vi editor

      编辑SSH配置文件,如下所示

      PermitRootLogin是 (如果存在则删除#)

      密码验证是

  2. 重启SSH

    sudo /etc/init.d/sshd restart

  3. 更改/设置root密码

    sudo passwd root

    输入新密码并重新输入(至少8个字符)

  4. 退出当前会话并关闭PuTTY

    exit

  5. 再次尝试以root身份登录并输入以前设置的密码。

答案 5 :(得分:1)

解决了! 尝试比较根密钥文件和用户密钥文件)

diff /root/.ssh/authorized_keys /home/user/.ssh/authorized_keys

...然后查看

答案 6 :(得分:0)

编辑/ etc / ssh / sshd_config,并确保设置:

PasswordAuthentication yes

然后重新加载SSH:

systemctl reload sshd.service

您现在可以以ec2-user以外的用户身份登录。

答案 7 :(得分:0)

对于像我这样创建新用户,将root的.ssh目录复制到新用户,设置所有权并仍然出现此错误的任何人-查看新用户的〜/ .ssh / authorized_keys文件。它已指定强制执行提示的SSH参数。删除从该行到ssh-rsa的所有内容,一切都会顺利进行。

或者-将/home/ec2-user/.ssh复制到新用户homedir而不是/root/.ssh

答案 8 :(得分:0)

ssh -i mykey.pem root@xxx-xxx-xx-xx-xxx.compute-1.amazonaws.com

只需将上面的命令替换为这个

ssh -i mykey.pem ubuntu@xxx-xxx-xx-xx-xxx.compute-1.amazonaws.com

它在我的情况下工作