作为标题的问题。 为什么这样,我使用了ssh命令: ssh -i mykey.pem root@xxx-xxx-xx-xx-xxx.compute-1.amazonaws.com 但我得到了这个错误,在谷歌上找不到任何东西。我做错了什么?
答案 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
是我称之为每个节点(例如head
或n1
)。然后我为每个节点输出该输出在每个节点的/etc/hosts
文件中。
我遇到的问题是当我在头节点中输入ssh n1 ssh到我的第一个从属节点时,我得到同样的错误消息:Please login as the use "ec2-user" rather than the user "root".
所以在做了一些研究后,我想出了如何解决它。
首先:
su -
进入root。现在vi /etc/ssh/sshd_config
和
取消对PermitRootLogin yes
行的评论。service sshd stop
然后service
sshd start
第二名:
vi /root/.ssh/authorized_keys
ssh-rsa.
之前的所有内容。只需在#
开头即可
文件的内容,在no-port-forwarding
之前...并点击ssh-rsa
上的输入以将其移至/etc/hosts
下一行(这样你不必删除任何东西,如果你
想要回溯)。 现在您应该能够登录到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客户端,这就是我解决问题的方法。
访问和编辑SSH配置文件,允许root登录和密码验证。
输入以下命令以打开ssh config
sudo vi /etc/ssh/sshd_config
使用vi,how to use vi editor
编辑SSH配置文件,如下所示PermitRootLogin是 (如果存在则删除#)
密码验证是
重启SSH
sudo /etc/init.d/sshd restart
更改/设置root密码
sudo passwd root
输入新密码并重新输入(至少8个字符)
退出当前会话并关闭PuTTY
exit
答案 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
它在我的情况下工作