SSH 私钥认证在 Ubuntu 服务器中不起作用

SSH 私钥认证在 Ubuntu 服务器中不起作用

我最近创建了一个运行 Ubuntu 20.04.3 服务器的新虚拟机,为了对 SSH 服务器使用密钥对身份验证,我使用 创建了密钥对ssh-keygenPubkeyAuthentication 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/

如果是这种情况,您可能还想设置:PermitRootLoginprohibit-password我不确定是否需要,但肯定会更安全。

您最终可能还想将其设置PasswordAuthenticationno

相关内容