我刚刚在我的 ubuntu1 服务器上创建了一个 root 帐户,如下所示:
packt@ubuntu1:~$
packt@ubuntu1:~$ sudo -i
[sudo] password for packt:
root@ubuntu1:~#
当我尝试使用以下命令从我的 centos 机器(或任何机器) ssh 这个 ubuntu 服务器时,我被拒绝权限。
[packt@centos1 ~]$ ssh root@ubuntu1
root@ubuntu1's password:
Permission denied, please try again.
root@ubuntu1's password:
Permission denied, please try again.
root@ubuntu1's password:
Permission denied (publickey,password).
[packt@centos1 ~]$
我知道我可以从 ubuntu1 机器进入 root 权限,但我需要从其他机器使用 root 权限访问该机器。
有人能让我知道我错在哪里吗?
答案1
您正在使用 sudo 获取 root shell。这并不意味着您已启用 root 帐户。
要启用 root 登录,您必须为 root 设置密码:
sudo passwd root
然后你必须编辑你的sshd_config
sudo editor /etc/ssh/sshd_config
改变
PermitRootLogin prohibit-password
到
PermitRootLogin yes
退出编辑器,然后使用以下命令重新启动 sshd
sudo systemctl 重新启动 openssh-server
请注意,我们不建议这么做。我真的想不出有什么理由需要通过 ssh 进行 root 访问。命令前面可以加上 sudo,并且 sudo 配置为无密码使用。文件复制?您通常可以修改目标的权限,这样您就不必是 root。
答案2
这里可能有多种原因。
首先,许多 Linux 发行版都带有,或者至少建议您将用户锁定root
。ssh
这是因为每个系统都带有root
,如果您知道用户,这会更容易暴力破解机器。虽然不是万无一失的,但很有帮助。
否则,您需要了解每个用户都有自己的密码,并且该用户的密码以及sudo
在 中找到的条目/etc/sudoers
允许用户成功执行命令sudo
。
需要澄清的是,当您使用此命令时,您使用的是 USER 密码:
sudo su -i
sudo
检查您是否被允许运行该命令,并提示您输入用户密码。
当您登录计算机时,您将再次使用该 USER 密码。让您的 USER 和 root 帐户共享密码不太可能,而且是一种不好的做法。在这种情况下,由于您知道 USER 密码,因此您可以执行以下操作:
ssh USER@myserver
sudo su -
在这里,您可以使用 USER 帐户和已知密码访问系统,然后升级到 root。这解决了任何问题,也是您应该升级到 root 的方式。
如果您发现您的服务器允许 root 登录,但您使用的密码不正确,请务必锁定它。您的问题的其他答案建议您允许 root 登录,但相反,我要求您了解情况,并按照此建议保持安全。查找ssh
强化,并至少设置fail2ban
。
答案3
默认情况下,通过 ssh 禁用 root 访问。您可以启用 root ssh 访问或以普通用户身份 ssh 并进行 su 或 sudo。
要通过 ssh 启用 root 登录:
以 root 身份编辑 /etc/ssh/sshd_config 中的 sshd_config 文件:
sudo nano /etc/ssh/sshd_config.
在文件的身份验证部分添加一行内容
PermitRootLogin 是 . ...
保存更新的 /etc/ssh/sshd_config 文件。重新启动 SSH 服务器:
sudo service sshd restart.
重要的提示
这不是解决问题的好办法,因为它暴露了 root 权限,而用户已经有了具有 sudo 权限的正确用户。这并没有解决问题,而是提供了一种不必要地增加风险并支持不良做法的变通方法。
使用 SSH 密钥进行 root 登录(可能更安全):
如果你必须通过 SSH 以 root 身份登录,使用 SSH 密钥登录可能更安全(也更简单)。设置过程稍长一些,但如何为 root 用户设置无密码 SSH 访问