远程login作为在Ubuntu的根

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

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

它成功login。

我在ubuntu中直接使用login

  $ root@remotehostname root@remotehostname's password: 

它是抛出错误消息中

 Permission denied, please try again. 

如何解决这个问题呢?

Solutions Collecting From Web of "远程login作为在Ubuntu的根"

Ubuntu文档说:

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

它还说:

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

它详细地谈论了为什么这样做。


启用root帐户:

 sudo -i 

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

 sudo passwd root 

使用风险自负!

以root身份登录到X可能会导致非常严重的问题。 如果您认为您需要一个root帐户来执行某个操作, 请首先咨询官方支持渠道 ,以确保没有更好的选择。

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

你可以改变它yes

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

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

更好的方法是允许使用公钥认证的root登录,而不是使用密码。 Debian邮件列表存档解释了推理。

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

  2. 在根目录的home目录下创建.ssh目录,如果它不存在,请确保它具有严格的权限:

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

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

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

     cat id_rsa.pub | sudo -i tee -a .ssh/authorized_keys sudo -i chmod 600 .ssh/authorized_keys 

使用此设置,您应该可以使用您的私钥以root用户身份登录。

如果您以前启用了root帐户,请确保现在禁用它:

 sudo passwd -l root 

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

 ssh user@remotehostname user@remotehostname's password: 

然后使用sudo做你想做的或者获得一个root shell的推荐方式:

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

然后做你的家务。 你可以使用“sudo -i”,而不是“sudo su”,或者使用“sudo -s”来保持当前的环境。

请参阅Ubuntu Sudo / Root文档

编辑你的/ etc / sshd_config这样做:

 sudo /etc/sshd_config 

搜索具有PermitRootLogin的行到认证部分,取消注释PermitRootLogin或设置PermitRootLogin yes 。 或者简单地将这一行添加到文件的末尾:

 PermitRootLogin yes 

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

 /etc/init.d/ssh restart 

要么

 service ssh restart 

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

 sudo command 

或者干脆:

 sudo su 

继续在您的root帐户下进行会话

 ssh -l user localhost "sudo whoami" 

收益:

 root 

只要:

  1. 远程主机允许连接的用户能够sudo而不要求进一步的密码。

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

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

如果存在密钥等安全问题,那么你可以看一下名为expect的语言 – 使用期望脚本你将能够ssh / telnet什么是远程主机,并相应地发送密码等

我认为唯一一次我厌倦了以root身份登录是我第一次使用AWS EC2,并试图以root身份登录,因为我知道它存在。 用户名ec2-user。

  1. 编辑sshd_config文件vi /etc/ssh/sshd_config
  2. 在Authentication下#PermitRootLogin without-password
  3. 在下面插入PermitRootLogin yes
  4. 保存文件。
  5. 重启ssh服务service ssh restart

默认情况下,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; 

完成!