升级到Ubuntu 22.04 (Jammy)后,AWS CodeCommit通过ssh认证失败 &



我刚把桌面升级到Ubuntu 22.04。当我试图在AWS CodeCommit(使用ssh)上推送到我的git仓库之一时,我得到:

$ git push origin master
Unable to negotiate with 52.94.226.180 port 22: no matching host key type found. Their offer: ssh-rsa
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

如果我在一台使用旧版本Ubuntu的计算机上尝试同样的事情,使用相同的密钥和ssh配置,推送成功:

$ git push origin master
[master 879fbb1] -
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100755 Blah.pdf
To ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/my_repo
e360ec8..879fbb1  master -> master

我将HostKeyAlgorithms +ssh-rsa添加到~/.ssh/config中的条目中,因此它看起来像这样:

Host git-codecommit.*.amazonaws.com
HostKeyAlgorithms +ssh-rsa
IdentityFile ~/.ssh/codecommit_rsa
User XXXXXXXX

现在我得到了一个不同的错误:

$ git push origin master
APKAIKOVHJDF7L22TRPA@git-codecommit.us-east-1.amazonaws.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

也许这有帮助?

$ sudo scanssh -s ssh 52.94.226.180
52.94.226.180:22 SSH-2.0-AWSCodeCommit VGh1LCAyOCBBcHIgMjAyMiAyMDozOToyMSArMDAwMFRE84lk14QcsWNrhwqxNLNmRuhBFhi2T0uc9R+6yS0sQklQWVZaOGpobGJHYWdvUER3MHhUVTYzY3c5SzlXSEFNOTRYNWdKMW0yY3M9
Effective host scan rate: 1.02 hosts/s

PubkeyAcceptedKeyTypes +ssh-rsa行也添加到您的~/.ssh/config条目中,因此它看起来像这样:

Host git-codecommit.*.amazonaws.com
IdentityFile ~/.ssh/codecommit_rsa
User XXXXXXXX
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

关于该问题的更多信息:

Ubuntu 22.04附带了一个新版本的ssh (OpenSSH8.9p1),而以前的Ubuntu版本使用的是OpenSSH8.4p1或更早的版本。

在OpenSSH8.8p1中有一个突破性的改变,默认情况下禁用使用SHA-1哈希算法的RSA签名。

选自OpenSSH发行说明

此版本禁用使用SHA-1哈希算法的RSA签名默认情况下。SHA-1哈希算法已经进行了此更改密码被破解,并且可以创建选择前缀$ $50K的哈希冲突[1]

对于大多数用户来说,这个更改应该是不可见的,而且确实存在不需要替换ssh-rsa密钥。OpenSSH已经支持RFC8332自7.2版以来的RSA/SHA-256/512签名和现有的ssh-rsa密钥在可能的情况下自动使用更强的算法。

连接到较旧的SSH时更有可能出现不兼容没有升级或没有密切跟踪的实现SSH协议的改进。对于这些情况,这可能是必要的有选择地重新启用RSA/SHA1以允许连接和/或用户通过HostkeyAlgorithms和PubkeyAcceptedAlgorithms进行认证选项。例如,~/中的下面一节。Ssh/config将启用用于单个目标主机的主机和用户身份验证的RSA/SHA1:

Host old-host
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

我们建议启用RSA/SHA1仅作为权宜之计,直到遗留可以使用另一种密钥类型升级或重新配置实现(如ECDSA或Ed25519)

[1] "SHA-1是一个混沌:SHA-1上的首选前缀碰撞和PGP信任网络中的应用Leurent, G和Peyrin, T(2020) https://eprint.iacr.org/2020/014.pdf

最新更新