在我的项目中,我必须远程安装一些包。如果我必须登录 debian,我会说:
$ ssh root@remotehostname
root@remotehostname's password:
它成功登录。
我已经直接使用登录ubuntu
$ root@remotehostname
root@remotehostname's password:
它是抛出错误消息
Permission denied, please try again.
如何解决这个问题呢?
检查以下是否/etc/ssh/sshd_config
配置。如果不是,则不允许以 root 身份登录。PermitRootLogin yes
# Authentication:
yes
您可以将其更改为yes
.
然后,重新启动 ssh 服务以应用更改:
sudo service sshd restart
默认情况下,Root 帐户密码在 Ubuntu 中是锁定的。
它还说:
请记住,大量的 Ubuntu 用户是 Linux 的新手。任何操作系统都有一个学习曲线,许多新用户尝试通过启用 root 帐户、以 root 身份登录和更改系统文件的所有权来走捷径。
它详细讨论了为什么这样做。
启用根帐户:
sudo -i
要启用 Root 帐户(即设置密码),请使用:
sudo passwd root
使用风险自负!
以 root 身份登录到 X 可能会导致非常严重的问题。如果您认为您需要一个 root 帐户来执行某个操作,请先咨询官方支持渠道,以确保没有更好的选择。
不要启用 root 帐户。不要为 root 帐户设置密码。
更好的方法是允许 root 使用公钥身份验证登录,而不是使用密码。原因在 Debian 邮件列表档案中有解释。
打开/etc/ssh/sshd_config
并检查是否PermitRootLogin
设置为yes
. 如果不是,则将其设置为 yes 并重新ssh
启动sudo service ssh restart
.ssh
如果该目录不存在,则在 root 的主目录中创建该目录并确保它具有严格的权限:
sudo -i mkdir -p .ssh
sudo -i chmod 700 .ssh
在您要登录的系统中创建一个公钥/私钥对。
将您的公钥复制到您的常规用户帐户。
将您的公钥附加到.ssh/authorized_keys
root,并确保该文件具有严格的权限:
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 su',你也可以使用'sudo -i',它是等价的,或者'sudo -s',保持当前环境。
编辑你的 /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 帐户下继续会话
ssh -l user localhost "sudo whoami"
返回:
root
只要:
远程主机允许连接的用户能够 sudo 而无需进一步输入密码。
已运行 ssh-copy-id 或将正确的密钥复制到远程主机,以便用户无需密码即可通过 ssh 再次连接
唯一不同的是在执行命令之前添加了 sudo 这个词
如果密钥等存在安全问题,那么您可以查看一种称为期望的语言 - 使用期望脚本,您将能够 ssh / telnet 到远程主机并相应地发送密码等
我认为我唯一一次厌倦以 root 身份登录是我第一次使用 AWS EC2 并且我尝试以 root 身份登录,因为我知道它存在。用户名 ec2-user。
vi /etc/ssh/sshd_config
#PermitRootLogin without-password
在 Authentication 下注释掉:PermitRootLogin yes
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;
完毕 !!!
编辑该
/etc/ssh/sshd_config
文件并将“PermitRootLoginforced-commands-only”行更改为“PermitRootLogin without-password”。
使用“<code>service sshd restart”重启 sshd 服务器。
编辑/root/.ssh/authorized_keys
文件。这个文件应该只有一行。它以“echo”或“command ... sleep 10”开头;然后你可以看到“ssh-rsa [big long key]”。从行首删除文本,直到它显示“ssh-rsa”。
使用 root 和您的密钥对对您的机器进行 SSH