Windows下SSH密钥身份验证配置失效求助
看起来你已经把基础配置都捋了一遍,但还是卡在密钥验证上,我帮你梳理几个法语版Windows上容易踩的坑,还有一些容易被忽略的细节:
先揪出组名的小错误:你提到把
administrators_authorized_keys的权限组改成了Administrateur:F,但法语版Windows的管理员组其实是复数形式的Administrateurs,不是单数!你可以在Windows命令行里敲net localgroup确认一下组名,然后用这条命令修正文件的ACL权限(这一步非常关键,Windows OpenSSH对这个文件的权限要求极严):icacls "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrateurs:F" /grant "SYSTEM:F"改完一定要重启SSH服务:
net stop sshd && net start sshd确认密钥文件的路径和归属:Windows OpenSSH的规则和Linux不一样:
- 如果你用管理员账号登录,公钥必须放在
C:\ProgramData\ssh\administrators_authorized_keys里,不能放到用户个人目录的.ssh/authorized_keys - 普通用户才用个人目录下的
.ssh/authorized_keys,而且这个文件的权限也要设置成只有当前用户和SYSTEM能访问
- 如果你用管理员账号登录,公钥必须放在
核对sshd_config的隐藏配置项:除了你已经设置的
PubkeyAuthentication yes和PasswordAuthentication no,还要检查这两个:AuthorizedKeysFile:默认针对管理员的路径是PROGRAMDATA/ssh/administrators_authorized_keys,如果这个配置被修改过,密钥验证直接失效StrictModes yes:这个选项会严格检查密钥文件的权限,前面的ACL设置不达标就会被拒绝
检查公钥的格式和完整性:你用
scp传过去的公钥,要确保是一行完整的内容,格式是ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... 你的iPhone设备备注,文件里不要有多余的换行、空格或者注释内容客户端私钥的权限也不能忘:在你的iPhone端,私钥文件(一般是
~/.ssh/id_rsa)的权限必须设为600,不然OpenSSH会因为私钥权限太宽松而拒绝使用。在NewTerm里敲这条命令:chmod 600 ~/.ssh/id_rsa结合服务器日志精准定位:你提到有服务器端日志,如果上面的步骤都试过还是不行,看看日志里有没有类似这些关键词:
invalid ownership or permissions:说明密钥文件权限还是有问题no mutual signature algorithm:可能是iPhone生成的密钥算法和Windows SSH服务器不兼容(比如用了ed25519但服务器没开启)publickey for user ... invalid:说明公钥没放对文件,或者格式错误
备注:内容来源于stack exchange,提问作者Grez

