1. 背景
以前一直使用秘钥登录Linux,最近新装了一台Ubuntu 22.04,照旧部署公钥,使用私钥登录,结果SecureCRT 登录没有问题,使用Xshell登录一直报“所选的用户密钥未在远程主机上注册,请再试一次”。然后各种试,最后才发现问题,记录如下:
2. 参考
- 远程连接ubuntu服务器报错:userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms
- 使用 ECDSA 与 Ed25519 公钥算法
- ssh 连不上服务器 key type ssh-rsa not in PubkeyAcceptedAlgorithms 的解决办法
3. 环境
Ubuntu 22.04
4. 现象
- Xshell 提示错误:“所选的用户密钥未在远程主机上注册,请再试一次”
- 服务端日志: tail -n 100 /var/log/auth.log
Apr 29 16:12:40 sj-386 sshd[69647]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
Apr 29 16:12:43 sj-386 sshd[69647]: error: Received disconnect from 10.10.10.111 port 58575:0: [preauth]
Apr 29 16:12:43 sj-386 sshd[69647]: Disconnected from authenticating user sj 10.10.10.111 port 58575 [preauth]
5. 解决
- 问题定位:错误原因是 userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms
- 解决方法: 使用 ed25519 算法生成秘钥
ssh-keygen -t ed25519
6. 注意
总结其它常见问题:
- 公钥目录属主、权限错误
- .ssh属主一定是登录用户sj。我用root账号导入公钥,文件属主成root了
- .ssh目录权限是700
root@sj-386:/home/sj/.ssh# ll /home/sj/ -a
total 32
drwxr-xr-x 4 sj sj 4096 Apr 29 19:20 ./
drwxr-xr-x 6 root root 4096 Apr 28 16:55 ../
drwx------ 2 sj sj 4096 Apr 29 17:33 .ssh/
- 公钥文件名称、权限
-
- 文件名 authorized_keys。导入公钥,千万不要导成私钥了
- authorized_keys权限是600
drwx------ 2 sj sj 4096 Apr 29 17:33 ./
drwxr-xr-x 4 sj sj 4096 Apr 29 19:20 ../
-rw------- 1 sj sj 99 Apr 29 17:33 authorized_keys
-rw------- 1 root root 464 Apr 29 17:32 shijin_ed25519
-rw-r--r-- 1 root root 99 Apr 29 17:32 shijin_ed25519.pub
- 转换私钥命令
# 注意,转换私钥会覆盖原文件
ssh-keygen -p -m PEM -f shijin_ed25519