我想在 Windows 上使用 VS Code 中的远程资源管理器从 Ubuntu 访问服务器。一直输入密码很烦人,所以我尝试使用 ssh-keygen 生成 ssh 密钥。该密钥对普通用户来说没问题,但我无法以 root 身份登录。
来自 cmd (ssh root@<server_ip>) 的错误:
root@<server_ip>: Permission denied (publickey,password).
错误在/var/log/auth.log
:
sshd[1012327]: Connection reset by authenticating user root <client_ip> port 59021 [preauth]
我见过的所有解决方案都提到了 sshd_config,但是其中启用了 root 登录。sshd_config:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
PubkeyAuthentication yes
# Expect .ssh/authorized_keys2 to be disregarded by default in future.
#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
我已将公钥添加到/home/user/.ssh/authorized_keys
文件中。在我看来,此密钥仅适用于用户,但从指南来看,我似乎也可以将其用于 root。
那么为什么我不能以 root 身份连接?
答案1
在我看来,此密钥仅适用于用户,但从指南来看,我也可以将其用于 root。
导游误导了您。
每个用户都有自己的主目录,因此也有自己的authorized_keys
。root 的主目录通常是/root/
。因此,以 root 身份登录的相关文件是/root/.ssh/authorized_keys
。它与 无关/home/user/.ssh/authorized_keys
。
想一想。/home/user/.ssh/authorized_keys
属于user
普通用户,并且可能或者可能不会具有 sudo 访问权限。用户可以在那里注册任何密钥。如果 root 使用相同的文件,那么用户只需授权某个密钥即可以 root 身份登录。