问题描述
如果你的公钥已经添加到了gerrit,并且你也有该代码的下载权限,但是拉取代码的时候会出现下图这种"incorrect signature"错误,那么你可能是SSH版本过高,导致的不兼容低版本加密算法所导致的问题。
先检查一下SSH的版本
这个是作者解决问题过后的低版本,如果比这个版本高的话,可能需要手动降级
解决方案
1:更换源
sudo gedit /etc/apt/sources.list
首先替换一下源,因为可能你之前添加的源里面有高版本的工具,你如果直接安装SSH就可能安装到高版本,直接导致错误。
下面是作者更换的源,仅供参考
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
deb http://archive.ubuntu.com/ubuntu/ focal multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu focal partner
deb http://security.ubuntu.com/ubuntu focal-security main restricted
deb http://security.ubuntu.com/ubuntu focal-security universe
deb http://security.ubuntu.com/ubuntu focal-security multiverse
2:删除SSH
sudo apt remove openssh-server
sudo apt remove ssh
3:重新安装SSH
sudo apt install openssh-server
这个时候可能会出现缺少依赖而无法安装的情况
直接安装所需依赖
sudo apt install openssh-client=1:8.2p1-4 openssh-sftp-server ssh-import-id
如果缺少其它依赖,可以根据具体的报错进行安装
4:重启SSH
sudo systemctl restart ssh
作者之前因为一些原因,从网上添加了很多源,然后直接全升级,导致好多工具都被升级到了最新,后续遇到了很多工具版本过高引起的问题。这个故事告诉我们,如果没有必要,千万千万别去直接升级!