解决新版本SSH不支持SSH-RSA问题

in voilk •  2 months ago

    t3.jpg

    一直以来我登录公司服务器用的都是SSH公私钥对,只要配置好公私钥就无需秘密一条命令就能登陆成功,非常方便。昨天我的笔记本电脑升级系统,然后重启了一下。重启完了后我又和以前一样登录服务器,可是发现让我输入密码,这就有些奇怪了,公私钥没有人动过啊。

    我先尝试输入密码,可以登录成功。然后我退出登录,登录的时候把详细信息打印出来,发现有提示“sign_and_send_pubkey: no mutual signature supported”。复制到百度搜了一下,说是没有配置服务器接受以ssh-rsa格式签名的公钥进行身份验证。

    这就有些奇怪了,我尝试了另外一台服务器可以用SSH无需密码登录。后来我查到“客户端和服务器会协商使用哪种密钥类型进行认证。如果服务器配置中通过PubkeyAcceptedKeyTypes指令限制了可接受的密钥类型,而客户端尝试使用的是不被允许的密钥类型(如SSH-RSA),就会发生这个错误。”

    解决办法是修改服务器端的SSH配置文件ssh配置文件,比如~/.ssh/config添加"PubkeyAcceptedKeyTypes +ssh-rsa"。我修改完文件后尝试了一下,果然好了可以无需指定密码登录成功。

    这个解决方法只是临时的,不是最好的,因为SHA-1算法不安全,新版本的openssh已经禁用了。最佳方法是使用其它算法重新生成证书ssh-keygen -t ed25519 -C "your_email@example.com"

    既然解决的我就先这么用着,以后有时间再用新算法生成公私钥对。

      Authors get paid when people like you upvote their post.
      If you enjoyed what you read here, create your account today and start earning FREE VOILK!