我尝试像这样在 M1 macOS 终端中连接到 ssh 服务器
ssh -i {myKeyFilePath/myKeyFile.pem} user@host
Run Code Online (Sandbox Code Playgroud)
但它返回
sign_and_send_pubkey: no mutual signature supported
user@host: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
我没有修改任何ssh设置,{myKeyFile.pem}的文件权限是400。我也可以通过IntelliJ远程主机很好地连接ssh服务器,但是当我在终端中尝试这个时,它出错了。
sho*_*aly 272
当我更新我的Mac系统时,所有的ssh服务器都无法使用私钥进行ssh,您可以在~/.ssh/config的开头添加以下3行。
但最好的解决方案是创建一个新的私钥并将公钥一一上传到每个服务器,因为当您收到此错误时,意味着您的私钥已不再使用。
# vim ~/.ssh/config, add the lines at the beginning
Host *
PubkeyAcceptedKeyTypes=+ssh-rsa
HostKeyAlgorithms=+ssh-rsa
Run Code Online (Sandbox Code Playgroud)
小智 57
我花了几个小时才找到这个问题和答案。ssh这是进入服务器的快速尝试,然后再处理这些内容:
ssh -o PubkeyAcceptedKeyTypes=ssh-rsa -i {yourfile} user@host
Run Code Online (Sandbox Code Playgroud)
这结合了shoaly和John Hanley之前的答案,其中包含更多值得关注的细节和建议。
Joh*_*ley 50
您的 SSH 客户端很可能正在使用ssh-rsa(RSA+SHA1),并且您的服务器禁用了该签名算法。SHA-1 存在漏洞,OpenSSH 在版本 8.8 (2021-09-26) 中禁用了该签名算法。
ssh-rsa 的替代品是 rsa-sha2-256 和 rsa-sha2-512。
尝试这个命令:
ssh -o PubkeyAcceptedKeyTypes=rsa-sha2-256 -i {myKeyFilePath/myKeyFile.pem} user@host
Run Code Online (Sandbox Code Playgroud)
如果该命令失败并出现有关不支持的密钥交换的错误,那么您的 SSH 客户端可能是过时的。
使用以下解决方案之一:
编辑:
如果有效,您可以将其永久添加到您的~/.ssh/config文件中,并从命令行使用中删除它。但是,有一个有效的安全原因导致 rsa-sha1 被禁用。仅在万不得已时才执行此操作,因为 SHA1 已被破坏。如果您的服务器经过安全审核或暴露于公共 Internet,请勿启用 rsa-sha1。
Host *
PubkeyAcceptedKeyTypes +ssh-rsa
Run Code Online (Sandbox Code Playgroud)
替换*为特定主机或 IP 地址以限制此配置的使用。
小智 9
我在尝试使用 ssh 连接的 AWS EC2 上很长时间都收到此消息:
sign_and_send_pubkey: no mutual signature supported
Run Code Online (Sandbox Code Playgroud)
上面的代码救了我:
# vim ~/.ssh/config, add the lines at the beginning
Host *
PubkeyAcceptedKeyTypes=+ssh-rsa
HostKeyAlgorithms=+ssh-rsa
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87577 次 |
| 最近记录: |