0%

Ubuntu 22.04 SSH the RSA key isn

最近用户反馈ssh密钥登陆Ubuntu系统时报认证错误,为此调查了下。

https://static.1991421.cn/2022/2022-07-18-215907.jpeg

排查

  1. 公私钥密码使用的RSA加密算法
  2. 尝试命令行直接SSH登陆,终端App为Mac自带Terminal

ssh -v -i ~/test.pem ubuntu@1.221.54.8

登陆发现可以成功,而webshell报错

注意

  1. SSH如果报错Permissions 0644 for ‘test.pem’ are too open.即确保私钥文件权限合适
1
chmod 400 test.pem

debug1: Local version string SSH-2.0-OpenSSH_8.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.9p1 Ubuntu-3

  1. ssh登陆成功后,想退出输入exit

分析

  1. 如上本地终端Terminal或iTerm2均可登陆成功,webshell不可以,webshell中用到了node模块ssh2。查询同使用该模块的shell产品,比如tabby,测试发现也是登陆失败,因此可以确定跟ssh2模块实现有关。
  2. ubuntu22.04是2022年4月发布的新系统,使用老版系统是发现没有该问题,因此也跟系统升级有关,查询发现新系统默认关闭SSH--RSA验证支持

综上可以确定新系统关闭RSA验证引发了该问题,而本地终端可以应该是其做了兼容支持,但node下ssh2模块明显没有兼容性支持。

解决方案

方案1-服务器配置修改

sudo vi /etc/ssh/sshd_config

增加如下配置PubkeyAcceptedKeyTypes +ssh-rsa

重启电脑生效

方案2-公私钥算法调整

重新创建公私钥,生成算法选择其它的,比如ed25519

方案3-客户端SSH2兼容性提升

大佬已有PR,支持,在没有合并发布新SSH2包之前可以临时调整版到如下版本解决。

1
"ssh2": "git@github.com:Eugeny/ssh2.git#22735cecf1d9c118b2b8af1c2f80fe5b04996fe1",

相关文档