问题描述:Mac 系统在更新到 Mac OS Ventura系统后,之前使用好好的Sourcetree 不能用了,会提示你需要输入用户名和密码,开启日志会看到 “no matching host key type found” 和 “Permission denied (publickey)”等提示。
经过查询发现:macOS Ventura 内置使用了OpenSSH_9.0p1 也就是默认的加密版本发生了变化,且这个版本是默认关闭了ssh_rsa算法。而Sourcetree 则大多默认使用这种算法,所以会导致连接失败。
所以解决方案也就一目了然 1、启用新的算法,比如推荐的更安全的ECDSA 或者 Ed25519算法。这个配置启用是需要服务器同步更新的. 本地这边需要重新生成密钥:
ssh-keygen -t ed25519 -C "Email"
执行完命令后,按照提示输入信息,记录保存好公私钥。
2、更加简单粗暴,既然关闭了,重新打开就好
1、CD ~/.ssh
2、打开Config 文件
这个时候有两种选择
第一种,局部配置
Host git.com(你的git地址)
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
第二种 全局配置
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
到这里问题基本就处理了。 附Config样式:
Host 192.168.xx.xx
HostName 192.168.xx.xx
Port xx
User xx
IdentityFile ~/.ssh/xxx
UseKeychain yes
AddKeysToAgent yes
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
备注:当使用的电脑为M系列芯片,在刚配置好SSH的时候,可能会出现not found的情况。 这个时候需要检查Git在 /usr/local/目录下是否有对应的文件, 其次,需要在SourceTree偏好设置里设置对应的git版本。 还需要注意的是,如果检查一切配置OK的情况下,还是拉取不了代码,则需要检查密钥文件是否正确,如果是用Windows生成的密钥文件,在Mac下,可能会出现读取不了密钥文件的问题。这个时候需要对密钥文件格式进行调整,最好的方法是找一个可以正常读取的密钥文件,将新增的密钥拷贝到可执行的文件中,然后根据需要改名。