常见3个原因:
服务器没有启用publickey登陆模式
加密算法问题
文件权限问题
服务器没有启用publickey登陆模式
登陆到服务器,执行sshd -T确认一下:
root@xxx:~# sshd -T | egrep “pubkey”
pubkeyauthentication no
pubkeyacceptedalgorithms [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],rsa-sha2-512,rsa-sha2-256
pubkeyauthoptions none
pubkeyauthentication no表示没有启用,需要启用一下。修改修改sshd配置文件/etc/ssh/sshd_config
PubkeyAuthentication yes
重启sshd服务:systemctl restart sshd
2. 加密算法问题
自从 OpenSSH 8.3 开始,RSA Key 登录默认被禁用,并被认为不安全。从 Ubuntu 22.04 和 Debian 12 开始,默认就不能用RSA Key登陆了。
解决办法一:
修改服务器端的/etc/ssh/sshd_config配置文件(注意不要改到/etc/ssh/ssh_config了)
vim /etc/ssh/sshd_config
# 添加配置
PubkeyAcceptedKeyTypes +ssh-rsa
# 重启 SSH
systemctl restart sshd
设置后,可以查得到:
root@xxx:~# sshd -T | egrep “pubkey”
pubkeyauthentication yes
pubkeyacceptedalgorithms [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
解决办法二:
客户端在生成密钥对时,使用更加安全的算法
ssh-keygen -t ed25519
3. 文件权限问题
远程服务器上的~/.ssh目录和~/.ssh/authorized_keys文件需要正确的权限设置。
~/.ssh目录应设置为700,~/.ssh/authorized_keys文件应设置为600。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
最后,如果是新版本的mac系统,需要加载一下新创建的key:
cd ~/.ssh
ssh-add –apple-use-keychain id_rsa