在ubuntu中以root身份远程登录

时间:2013-08-23 05:47:11

标签: linux ubuntu ssh

在我的项目中,我必须远程安装一些软件包。如果我必须登录debian,我会说:

$ ssh root@remotehostname
root@remotehostname's password: 

它成功登录。

我已直接使用

登录 ubuntu
 $ root@remotehostname
 root@remotehostname's password:

中的抛出错误消息
Permission denied, please try again.

如何解决这个问题?

10 个答案:

答案 0 :(得分:16)

检查/etc/ssh/sshd_config下方的PermitRootLogin yes是否# Authentication:。如果不是yes,则不允许以root身份登录。

您可以将其更改为yes

然后,重新启动ssh服务以应用更改: sudo service sshd restart

答案 1 :(得分:14)

Ubuntu documentation说:

  

默认情况下,Root帐户密码在Ubuntu中被锁定。

它还说:

  

请记住,大量的Ubuntu用户是新手   Linux。有一个与任何操作系统相关的学习曲线和许多新的操作系统   用户尝试通过启用root帐户登录来获取快捷方式   以root身份,并更改系统文件的所有权。

详细讨论了为什么这样做。


启用root帐户:

sudo -i

要启用Root帐户(即设置密码),请使用:

sudo passwd root

使用风险自负!

  

以root身份登录X可能会造成非常严重的问题。如果您相信   您需要root帐户才能执行某项操作,请咨询   首先是官方支持渠道,以确保没有   更好的选择。

答案 2 :(得分:11)

不要启用root帐户。不要为root帐户设置密码。

更好的方法是允许使用公钥身份验证进行root登录,而不是使用密码。 The reasoning is explained in the Debian mailing list archives.

  1. 打开/etc/ssh/sshd_config并检查PermitRootLogin是否设置为yes。如果没有,则将其设置为是,然后使用ssh

  2. 重新启动sudo service ssh restart
  3. 如果根目录不存在,请在根目录中创建.ssh目录,并确保它具有严格的权限:

    sudo -i mkdir -p .ssh
    sudo -i chmod 700 .ssh
    
  4. 在您要登录的系统中创建公钥/私钥对。

  5. 将您的公钥复制到常规用户帐户。

  6. 将您的公钥附加到root的.ssh/authorized_keys,并确保该文件具有严格的权限:

    cat id_rsa.pub | sudo -i tee -a .ssh/authorized_keys
    sudo -i chmod 600 .ssh/authorized_keys
    
  7. 使用此设置,您应该能够使用私钥以root身份登录。

    如果您之前已启用root帐户,请务必立即停用该帐户:

    sudo passwd -l root
    

答案 3 :(得分:4)

您可以为root设置密码,但不建议这样做,可能会产生安全风险。但是,如果目标系统上的用户帐户具有sudo凭据,则可以以用户身份登录:

ssh user@remotehostname
user@remotehostname's password:

然后使用sudo执行您想要的操作或以建议的方式获取root shell:

user@remotehostname$ sudo su
Password:
root@remotehostname#

然后做你的家务。而不是'sudo su'你也可以使用'sudo -i',它等同于'sudo -s',它可以保持当前的环境。

请参阅Ubuntu Sudo/Root documentation

答案 4 :(得分:3)

编辑你的/ etc / sshd_config:

sudo /etc/sshd_config

身份验证部分中搜索 PermitRootLogin 的行,并取消注释 PermitRootLogin 或设置 PermitRootLogin是。或者只是将此行添加到文件末尾:

PermitRootLogin yes

接下来你将重启ssh守护进程

/etc/init.d/ssh restart 

service ssh restart

取决于您的Linux发行版 现在,您将使用root帐户通过ssh登录 警告:出于安全原因,不建议这样做。你可以做的是通过ssh和你的用户会话中的任何其他accound登录:

sudo command

或简单地说:

sudo su

在您的root帐户下继续会话

答案 5 :(得分:2)

ssh -l user localhost "sudo whoami"

返回:

root

只要:

  1. 远程主机允许用户连接以便能够sudo而无需再输入密码。

  2. 已运行ssh-copy-id或将正确的密钥复制到远程主机,以便用户可以通过ssh无需密码再次连接

  3. 所有不同的是在执行命令之前添加了sudo这个词

    如果密钥等存在安全问题,那么您可以查看一种名为expect的语言 - 使用expect脚本,您将能够ssh / telnet到远程主机,并相应地发送密码等

答案 6 :(得分:2)

我认为我唯一厌倦以root身份登录的时候是我第一次使用AWS EC2而我试图以root身份进行操作,因为我知道它存在。用户名ec2-user。

答案 7 :(得分:1)

  1. 编辑sshd_config文件vi /etc/ssh/sshd_config
  2. 在身份验证下注释掉#PermitRootLogin without-password
  3. PermitRootLogin yes下面插入
  4. 保存文件。
  5. 重新启动ssh服务service ssh restart

答案 8 :(得分:0)

默认情况下,Root帐户密码在基于Debian的系统中被锁定,如Ubuntu:

切换到root帐户用户:

sudo -i;

现在设置root帐户的密码:

sudo passwd;

仅为root添加密码是不够的。

需要启用传入的ssh连接,如下所示:

修改/etc/ssh/sshd_config,找出以下行:

PermitRootLogin without-password

只需将without-password替换为yes,如下一行所示:

PermitRootLogin yes

然后重启SSH:

sudo service ssh restart;

最后重启系统:

sudo reboot;

完成!!!

答案 9 :(得分:0)

  1. 编辑 /etc/ssh/sshd_config文件并将“PermitRootLogin forced-commands-only”更改为“PermitRootLogin without-password”。

  2. 使用“service sshd restart”重新启动sshd服务器。

  3. 编辑/root/.ssh/authorized_keys文件。该文件应该只有一行。它以“echo”或“command ... sleep 10;”开头,然后你可以看到“ssh-rsa [big long key]”。从行的开头删除文本,直到它显示“ssh-rsa”。

  4. 使用root与您的密钥对对您的计算机进行SSH操作