Linux服务器SSH登录替换为FIDO2后仍需输密码的问题咨询
SSH使用FIDO2密钥仍要求输入密码的排查原因
以下是几个常见的原因及对应排查、解决方法:
1. 服务器SSH服务未启用公钥验证
登录服务器,检查/etc/ssh/sshd_config配置文件:
- 确认
PubkeyAuthentication配置项的值为yes(默认可能已开启,但需手动确认) - 若要彻底禁用密码验证,可将
PasswordAuthentication设为no(建议先确保公钥验证正常生效后再修改) - 检查
AuthorizedKeysFile路径是否与实际一致,默认路径为~/.ssh/authorized_keys,若有自定义修改需对应匹配
修改配置后重启SSH服务:
sudo systemctl restart sshd
2. 客户端未指定使用FIDO2密钥连接
默认情况下SSH会优先尝试加载默认命名的密钥(如id_rsa、id_ed25519),若你的FIDO2密钥文件名非默认,需手动指定:
- 临时指定密钥连接:
ssh -i ~/.ssh/id_mykey_sk USER@<IP-Address> - 永久配置:编辑客户端
~/.ssh/config文件,添加对应主机的配置规则:
保存后直接执行Host <IP-Address> User USER IdentityFile ~/.ssh/id_mykey_skssh USER@<IP-Address>即可自动使用该FIDO2密钥。
3. 服务器上密钥相关文件权限不符合要求
SSHD对用户目录和密钥文件的权限有严格限制,权限过松会被判定为不安全,进而拒绝使用公钥:
- 登录服务器,执行以下命令修正权限:
chmod 700 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
4. 密钥复制过程不完整或出错
检查客户端公钥文件~/.ssh/id_mykey_sk.pub的内容,与服务器~/.ssh/authorized_keys中的对应条目是否完全一致,确保没有多余空格、换行或字符缺失。
5. SSH版本不支持FIDO2密钥
ed25519-sk类型的FIDO2密钥需要OpenSSH 8.2及以上版本支持:
- 客户端执行
ssh -V,服务器执行sshd -V,检查版本是否达标,若版本过低需升级OpenSSH。
内容的提问来源于stack exchange,提问作者mepi0011
相关产品推荐
相关产品推荐

