当我尝试在 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
这个解决方案对我有用。
- (备份 ~/.ssh/ 文件夹)
- 如果你的 ssh 配置和私钥/公钥在升级 MacOS 之前位于 /etc/ssh/ 中
- 将 ssh_config 复制到 ~/.ssh/config
- 将所有私钥/公钥复制到 ~/.ssh/
- 在 ~/.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