这个问题有一阵了, 一直不知道啥原因
检查了配置文件
%PROGRAMDATA%/ssh/sshd_config
里面
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
检查了在.ssh/authorized_keys 里面确实有我添加的公钥
用 debug 模式运行 sshd, output 如下:
debug1: trying public key file C:\\ProgramData\\ssh\\administrators_authorized_keys
Failed publickey for xxxxxxx
经检查, 根本就没有 C:\ProgramData\ssh\administrators_authorized_keys 这么个文件 我的公钥都在 .ssh/authorized_keys 里面.
那么是什么导致 OpenSSH 去 administrators_authorized_keys 里面找公钥呢?
翻到 sshd_config 这个配置文件的最下面, 发现有这么两行:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
直接注释掉:
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
重启 sshd 服务 再试试 ssh, 这次没有提示要输 password 而是直接用密钥登录了, 问题解决.
PS: openssh 默认连进去是 cmd 而不是 powershell 可以把 default shell 改成 powershell 方便之后的操作 powershell 下运行:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
重启 sshd 服务, 这下直接连进去就是 powershell 了
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.