我们的网络主机已经升级到OpenSSH 8.8,这导致公钥失败。例如,Putty 0.74不能使用SSH私钥授权,而Putty 0.76可以授权。
我假设liximomo也有同样的问题,所以我试图通过使用OpenSSH 8.0到系统的hop来解决这个问题,然后从那里跳到web主机。
我的第一次尝试是假设sftp将转发代理连接,因此我使用了这个sftp.json:
{
"name": "Pair",
"host": "my.server.com",
"port": 822,
"protocol": "sftp",
"username": "steve",
"agent": "$SSH_AUTH_SOCK",
"hop": {
"host": "webhost.pairserver.com",
"protocol": "sftp",
"port": 22,
"username": "company",
"remotePath": "public_html"
}
}这将我带到我的服务器,但是在尝试跃点时,它失败了,因为“所有身份验证方法都失败了”。
我认为这是因为代理转发不起作用,所以我在服务器上放置了一个私钥,它将验证我到key主机上的身份。我知道密钥的工作原理,因为我可以登录到服务器,并使用该键在命令行上运行ssh。但是,它仍然失败了,出现了这样的错误:
[01-31 18:43:22] [error] Error: [webhost.pairserver.com]: All configured authentication methods failed发布于 2022-02-04 23:31:38
我找到了答案: SSH使用“主机密钥算法”为主机密钥和公钥身份验证生成签名。SSH客户端和服务器通常在此列表中包含"ssh-rsa“。
"ssh-rsa“算法使用SHA-1,该算法在2017年被打破。因此,继续使用此算法进行公钥身份验证是不安全的。但是,它仍然在服务器的“主机密钥算法”列表中,因为它也用于主机密钥。对主机密钥使用损坏的SHA-1算法不能作为SSH服务器进行破解。(理论上,它可以用来模拟SSH服务器,但这并不是很高的风险,因为大多数用户都盲目地接受新的主机密钥。)因此,OpenSSH 8.8仍然在“主机密钥算法”列表中包含"ssh-rsa“,但是"ssh-rsa”算法提供的公钥将被忽略,就好像该密钥不在authorized_keys文件中一样。
较早的SSH客户端不包括"ssh-rsa2-*“算法,因此它们将继续使用"ssh-rsa”提供公钥签名,这将被忽略。
重新配置OpenSSH 8.8主机以接受"ssh-rsa“作为公钥签名可能是不可能的,并且出于安全原因不推荐,并且可能不会被托管公司所允许。
对于这个问题,有两种解决方案:
将客户端升级到具有"ssh-rsa2-*“algorithms;
。
https://stackoverflow.com/questions/70935242
复制相似问题