15

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

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

它成功登录。

我已经直接使用登录ubuntu

 $ root@remotehostname
 root@remotehostname's password:

它是抛出错误消息

Permission denied, please try again.

如何解决这个问题呢?

4

10 回答 10

21

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

您可以将其更改为yes.

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

于 2013-08-23T06:10:58.343 回答
17

Ubuntu 文档说:

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

它还说:

请记住,大量的 Ubuntu 用户是 Linux 的新手。任何操作系统都有一个学习曲线,许多新用户尝试通过启用 root 帐户、以 root 身份登录和更改系统文件的所有权来走捷径。

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


启用根帐户:

sudo -i

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

sudo passwd root

使用风险自负!

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

于 2013-08-23T06:10:53.563 回答
11

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

更好的方法是允许 root 使用公钥身份验证登录,而不是使用密码。原因在 Debian 邮件列表档案中有解释。

  1. 打开/etc/ssh/sshd_config并检查是否PermitRootLogin设置为yes. 如果不是,则将其设置为 yes 并重新ssh启动sudo service ssh restart

  2. .ssh如果该目录不存在,则在 root 的主目录中创建该目录并确保它具有严格的权限:

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

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

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

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

通过此设置,您应该能够使用您的私钥以 root 身份登录。

如果您之前启用了该root帐户,请确保现在将其禁用:

sudo passwd -l root
于 2013-08-30T12:12:56.443 回答
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 文档

于 2013-09-01T19:42:39.883 回答
3

编辑你的 /etc/sshd_config 做:

sudo /etc/sshd_config

Authentication Section中搜索具有PermitRootLogin的行并取消注释PermitRootLogin或设置PermitRootLogin yes。或者只需将此行添加到文件末尾:

PermitRootLogin yes

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

/etc/init.d/ssh restart 

或者

service ssh restart

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

sudo command

或者简单地说:

sudo su

在您的 root 帐户下继续会话

于 2013-08-26T18:26:36.527 回答
3
ssh -l user localhost "sudo whoami"

返回:

root

只要:

  1. 远程主机允许连接的用户能够 sudo 而无需进一步输入密码。

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

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

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

于 2013-08-26T18:41:31.870 回答
2

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

于 2013-08-30T03:46:21.127 回答
1
  1. 编辑 sshd_config 文件vi /etc/ssh/sshd_config
  2. #PermitRootLogin without-password在 Authentication 下注释掉:
  3. 在下面插入PermitRootLogin yes
  4. 保存文件。
  5. 重启ssh服务service ssh restart
于 2014-10-28T08:17:35.660 回答
1

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

切换到root账户用户:

sudo -i;

现在设置root帐户的密码:

sudo passwd;

简单地为 root 添加密码是不够的。

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

编辑/etc/ssh/sshd_config,并找出以下行:

PermitRootLogin without-password

只需将单词替换without-passwordyes,如下行所示:

PermitRootLogin yes

然后重启SSH:

sudo service ssh restart;

最后重启系统:

sudo reboot;

完毕 !!!

于 2016-02-08T12:28:17.793 回答
1
  1. 编辑该 /etc/ssh/sshd_config文件并将“PermitRootLoginforced-commands-only”行更改为“PermitRootLogin without-password”。

  2. 使用“<code>service sshd restart”重启 sshd 服务器。

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

使用 root 和您的密钥对对您的机器进行 SSH

于 2018-05-19T11:57:17.457 回答