升级使用 macOS Ventura后,发现无法正常通过SSH命令连接到服务器,启用日志后也会找到no matching host key type found 的报错信息。使用基于SSH协议的一些指令也会出现错误,提示 Permission denied (publickey)。
主要原因在于, macOS Ventura中使用的是 OpenSSH_9.0p1,OpenSSH_9.0p1默认关闭了 ssh-rsa 算法。
想要解决这样情况,可以通过2个途径。基于更安全的 ed25519 哈希算法生成新的密钥,并配置到对应的服务器上、Github|Gitlab 的后台等。或者是本地重新启用 ssh 对 ssh-rsa 算法的支持。
第一种方式,就是生成ed25519 哈希算法秘钥,执行以下命令。
ssh-keygen -t ed25519
按照提示输入相关信息,并记录好生成的秘钥文件名和密码。如果登录的是服务器,替换或者新增密钥到服务器上,如果是使用Github可以添加新公钥信息到账户SSH-Key里。
还有一种方法,就是通过重启RSA/SHA1。要知道替换新密钥成本大,所以可以通过重新启用RSA/SHA1来允许连接或者个人用户认证。具体配置可以参考OpenSSH 8.8/8.8p1 的 Release Notes,可以选择仅启用单个密钥的RSA/SHA1支持,或者可以无差别全部启用。
全部针对 “/.ssh/config ”文件(不存在的话则新增此文件)进行操作:
启用单个主机或者地址:(如果不懂 Host xxx-host 的含义,建议使用启用全部场景)
# 在 ~/.ssh/config 文件的对应主机配置里新增2行:
Host xxx-host
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
默认全部环境启用。
# 配置里有 Host * 配置的,需要写到 Host * 内
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
# 没有的,在 ~/.ssh/config 文件的顶部插入或者尾部新增2行:
HostkeyAlgorithms +ssh-rsa
当使用的系统是Windows 11 或者 Linux 遇到类似情况,也可以从这样思路去解决。如果您需要帮助可以联系华纳云官网技术客服!