我正试图从笔记本电脑登录到我的桌面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";如果不存在,可以创建。