macOS 13 Ventura 中的 Git SSH“权限被拒绝”

macOS 13 Ventura 中的 Git SSH“权限被拒绝”

当我尝试在 macOS 13 (Ventura) 中使用 RSA SSH 密钥进行身份验证时,出现错误Permission denied (publickey)。但是,当我对 macOS 12 (Monterrey) 使用相同的命令时,它可以正常工作。

答案1

您需要基于更安全的哈希算法生成一组新密钥。一般来说 受到推崇的使用ed25519算法。

ssh-keygen -t ed25519 -C [email protected]
ssh-add -A

如果您确实无法升级 SSH(OpenSSH 6.4 中添加了支持)并且必须使用 RSA/SHA1(例如,服务器仅接受 RSA/SHA1 并且您无法更改这一点),请将此代码片段添加到~/.ssh/config客户端的顶部(如果不存在,则创建文件夹和文件)。

Host your-old-host.example.com
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa

它在主机密钥和公钥中都启用 RSA/SHA1,应该可以解决这个问题以及相关的“未找到匹配的主机密钥类型”问题。

答案2

macOS 13 (Ventura) 附带 OpenSSH_9.0p1。根据 OpenSSH 发行说明:

此版本默认禁用使用 SHA-1 哈希算法的 RSA 签名。进行此更改是因为 SHA-1 哈希算法在加密方面存在漏洞,并且有可能以不到 5 万美元的价格创建选择前缀哈希冲突 [1]

Reddit 帖子中描述了一种解决方法:文图拉的 SSH

也许更好的解决方案是基于更安全的哈希算法生成密钥。目前,我改用 ed25519,可以像这样生成:

ssh-keygen -t ed25519 -C "comment"

答案3

这个解决方案对我有用。

  1. (备份 ~/.ssh/ 文件夹)
  2. 如果你的 ssh 配置和私钥/公钥在升级 MacOS 之前位于 /etc/ssh/ 中
  • 将 ssh_config 复制到 ~/.ssh/config
  • 将所有私钥/公钥复制到 ~/.ssh/
  1. 在 ~/.ssh/config 末尾添加以下几行
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1

答案4

将以下内容添加到您的~/.ssh/config文件中

HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1

https://github.com/sshnet/SSH.NET/issues/1003

相关内容