我最近创建了一个运行 Ubuntu 20.04.3 服务器的新虚拟机,为了对 SSH 服务器使用密钥对身份验证,我使用 创建了密钥对ssh-keygen
并PubkeyAuthentication yes
在其中启用了/etc/ssh/sshd_config
,但我无法通过以下方式使用 SSH 登录:
ssh -i ~/.ssh/id_rsa [email protected]
/etc/ssh/sshd_config
:(
关闭密码验证并仅允许密钥验证也不起作用)Include /etc/ssh/sshd_config.d/*.conf PermitRootLogin yes PubkeyAuthentication yes PasswordAuthentication yes ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes PrintMotd no AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server
- 我希望能够在没有服务器的公钥的情况下登录服务器
authorized_keys
答案1
我尝试关闭密码验证并只允许密钥验证,但是也不起作用。
如果密钥认证不起作用,那么它就不起作用独立与其他身份验证类型不同。它们不会互相干扰。
(服务器的 authorized_keys 文件上没有公钥)
那样不行。实际上任何人都可以生成自己的 id_rsa 密钥对——服务器的 authorized_keys 文件上有公钥,服务器才能真正知道这一点这是你的钥匙而不是其他人的。
答案2
服务器上文件内的公钥authorized_keys
(位于您尝试连接的用户~/.ssh
文件夹中)本质上就是锁孔。您需要它才能使用相应的私钥连接到该用户。
您已PermitRootLogin
设置为yes
,所以我猜这也可能是您要做的事情。如果您尝试使用 root 进行连接,您可能需要确保您尝试用于连接的“authorized_keys”文件位于文件夹中/root/.ssh/
。
如果是这种情况,您可能还想设置:PermitRootLogin
,prohibit-password
我不确定是否需要,但肯定会更安全。
您最终可能还想将其设置PasswordAuthentication
回no
。