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

Hao*_*Xie 28 ssh git public-key macos macos-ventura

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

小智 31

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

ssh-keygen -t ed25519 -C hello@example.com
ssh-add -A
Run Code Online (Sandbox Code Playgroud)

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

Host your-old-host.example.com
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa
Run Code Online (Sandbox Code Playgroud)

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

  • 这通常是正确的答案,但它并不完全是“启用 RSA”——它为不支持 RSA/SHA256 的过时服务器启用 RSA/SHA1。现代 OpenSSH 服务器支持 RSA/SHA256(两种算法都可以使用完全相同的 id_rsa 密钥);不幸的是,如果服务器只接受 RSA(例如设备),那么几乎可以保证它已经足够老,专门需要 RSA/SHA1。 (8认同)
  • 请不要将此添加到“Host *”!这是可怕的做法。真正的解决方案是将远程服务器升级到OpenSSH 7.2以上的版本。如果这不起作用,请按主机 IP 添加或在连接时在命令行命令中添加。IE - `ssh -oPubkeyAcceptedAlgorithms=+ssh-rsa {user@host}` (3认同)

Hao*_*Xie 13

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

此版本默认禁用使用 SHA-1 哈希算法的 RSA 签名。进行此更改是因为 SHA-1 哈希算法在密码学上已被破坏,并且可能会造成 < 5 万美元的选择前缀哈希冲突 [1]

此 Reddit 线程中描述了一种解决方法:SSH in Ventura

也许更好的解决方案是基于更安全的哈希算法生成密钥。目前,我正在切换到 ed25519,它可以这样生成:

ssh-keygen -t ed25519 -C "comment"
Run Code Online (Sandbox Code Playgroud)

  • 最好的解决方案是如果可能的话升级服务器的 SSH 软件。虽然最初 SSHv2 仅定义 RSA 与 SHA-1 结合使用,但 RSA 密钥本身并不固有地与任何特定的哈希算法相关联,并且当客户端和服务器都支持新组合时,将自动与 SHA2-256 一起使用(尽管切换到 ed25519 键仍然是一个好主意)。 (2认同)

小智 6

这个解决方案对我有用。

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