Jason Koo

      Stay hungry, Stay foolish!

导航

Ubuntu下SSH root login

Posted on 2013-09-22 10:49  Jason Koo  阅读(2901)  评论(0编辑  收藏  举报

     最近在搭建一个集群,希望从一台机器上以root身份无密码登录到另一台机器上。比如有两台机器A和B, 希望从A机器上登录到B机器上,登录后是root身份。在A上登录命令形式为:ssh root@B。

    所有机器都是Ubuntu 12.04系统,且都安装了openssh-server。而且在每台机器的/etc/ssh/sshd_config文件中PermitRootLogin项均设置为了Yes。当从机器A上输入命令:ssh root@B后,提示输入 root@B's password:, 输入相应密码后,提示错误Permission denied, please try again. 

    从网上搜索了一些解决方案,其中有两个是可行的:

   方案一:将机器A上$HOME/.ssh/id_rsa.pub文件拷贝到机器B上,然后将该文件中的内容添加到机器B root用户主目录下的.ssh目录下的authorized_keys文件中。然后在机器A上再使用ssh root@B就能成功登录了。这种方式比较麻烦,需要先把A机器的公钥拷贝到B机器上,然后在B机器上切换到root用户,将公玥内容附加到root用户主目录下.ssh目录下的authorized_keys文件中。我们希望找到一种更加简单的方案。

  方案二:我们试图找到上面提示错误产生的根源。正常情况下,我们在机器A上输入命令:ssh root@B后,提示输入密码,输入正确密码后应该能够登录到B上,而且登录后的身份是root用户。那么为什么我们在输入密码后会提示Permission denied呢?原来,Ubuntu桌面系统默认情况下是没有启用root帐号的,在没有开启root帐号的情况下试图以root身份登录到另一台机器是不可能做到的。所以我们要做的是在机器B上启用root帐号。启用的方法很简单,只需要在机器B上输入下面的命令,并为root用户配置密码就可以了。        

sudo passwd root

配置好密码后,再使用上面的命令登录,然后输入配置的密码就能无误登录了。如果想无密码登录只需要在机器A上使用命令ssh-copy-id root@B,然后根据提示输入配置的root用户的密码,就能正确配置好root无密码登录到B机器了。

如果希望关闭启用的root帐号,可以使用下面的命令来关闭:

sudo passwd -dl root

方案二参考了Ask Ubuntu上的内容,下面是最有价值的部分:

Setting PermitRootLogin to Yes in your SSH config does not override Ubuntu's security policy that does not allow root logins.

If you want to login as root over SSH you will need to first enable the root account (Note that youvirtually never need to login as root, sudo will virtually always be sufficient for any task requiring root privileges. See here for more info on Ubuntu's security policy regarding sudo and the root account).

That said, if you really want to log in as root over SSH first enable the root account by setting a password for it.

sudo passwd root

Then, assuming PermitRootLogin is still enabled in your SSH server config, you should be able to login as root via SSH. Note that you really, really should be using Public/Private key pairs to login to the root account to keep the fairly risky business of enabling a root account and allowing it to be logged into via SSH from becoming just outright dangerous.

Once you've finished doing whatever you need to do with the root account I would recommend disabling it again by removing the password.

sudo passwd -dl root