如何在WINDOWS上使用公钥认证登录ssh-server ?



我正试图从笔记本电脑登录到我的桌面WSL。我已经安装了ssh-server (sshd)服务(在Windows 10上),我正在测试它。我通过ssh <username>@localhost用密码成功登录ssh。然后我试图删除密码,但失败了。当我同时启用密码和pubkey身份验证时,总是需要密码。

当我刚刚启用pubkey身份验证时,我得到<username>@localhost: Permission denied (publickey,keyboard-interactive).。我在事件查看器:sshd: Connection reset by authenticating user <username> 127.0.0.1 port 9931 [preauth]中找到了日志。

我已经尝试使用ssh -i .ssh/id_rsa.pub <username>@localhost来确保ssh客户端正确读取公钥。我试图通过OpenSSH for Windows中的基于密钥的身份验证命令生成authorized_keys:用户密钥生成。但是我仍然无法确认authorized_keys文件是否配置正确。(我知道我的问题可以通过Linux中的chmod 700解决,但我不知道Windows)

我一遍又一遍地检查sshd_config后才解决了这个问题。我希望这个问题不会浪费更多的人的时间,所以我提出了这个问题。

这是个愚蠢的问题。解决方案是删除sshd_config中的最后两行:

Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

我没有在微软文档中找到这个配置的任何描述,因为它只给出了原始手册的链接,并且配置是Windows独有的。

这个问题在Github上被问到,但它不是固定的。

还有另一种方法可以解决问题,而无需编辑c:ProgramDatasshsshd_config/ssh/id_rsa.pub";到文件c:ProgramDatasshadministrators_authorized_keys如果它不存在,您可以创建它。您可以通过添加

来强制系统在登录时使用公钥
Host remote_server_ip
HostName remote_server_ip
User remote_user_name
ForwardAgent yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

到本地系统文件">~/.ssh/config";如果不存在,可以创建。

相关内容

  • 没有找到相关文章

最新更新