84 lines
1.8 KiB
Markdown
84 lines
1.8 KiB
Markdown
# SSH 签名算法问题修复
|
||
|
||
## 问题根源
|
||
|
||
错误信息:`no mutual signature algorithm`
|
||
|
||
这是因为 OpenSSH 10.0 默认禁用了某些旧的签名算法(如 RSA-SHA1),而 Gerrit 3.3.8 使用的 Apache SSHD 可能不支持新的签名算法。
|
||
|
||
## 解决方案
|
||
|
||
### 方案一:在 SSH 配置中启用兼容算法(推荐)
|
||
|
||
在您的本地电脑上创建或编辑 SSH 配置文件:
|
||
|
||
```bash
|
||
# 编辑 SSH 配置文件
|
||
notepad ~/.ssh/config
|
||
# 或使用其他编辑器
|
||
```
|
||
|
||
添加以下内容:
|
||
|
||
```
|
||
Host 101.43.95.130
|
||
Port 29418
|
||
PubkeyAcceptedKeyTypes +ssh-rsa
|
||
PubkeyAcceptedAlgorithms +ssh-rsa
|
||
```
|
||
|
||
保存后,重新尝试:
|
||
|
||
```bash
|
||
ssh -p 29418 renjianbo@101.43.95.130 gerrit version
|
||
```
|
||
|
||
### 方案二:在命令行中指定算法
|
||
|
||
```bash
|
||
# 使用兼容的签名算法
|
||
ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -p 29418 renjianbo@101.43.95.130 gerrit version
|
||
```
|
||
|
||
### 方案三:生成新的 ed25519 密钥(推荐长期使用)
|
||
|
||
ed25519 密钥通常兼容性更好:
|
||
|
||
```bash
|
||
# 生成新的 ed25519 密钥
|
||
ssh-keygen -t ed25519 -C "your_email@example.com"
|
||
|
||
# 查看新公钥
|
||
cat ~/.ssh/id_ed25519.pub
|
||
```
|
||
|
||
然后将新的公钥添加到 Gerrit:
|
||
1. 访问:`http://101.43.95.130:8080/#/settings/ssh-keys`
|
||
2. 添加新的 ed25519 公钥
|
||
|
||
## 快速修复(最简单)
|
||
|
||
在您的本地电脑上执行:
|
||
|
||
```bash
|
||
# 创建或编辑 SSH 配置文件
|
||
cat >> ~/.ssh/config << 'EOF'
|
||
Host 101.43.95.130
|
||
Port 29418
|
||
PubkeyAcceptedKeyTypes +ssh-rsa
|
||
PubkeyAcceptedAlgorithms +ssh-rsa
|
||
EOF
|
||
|
||
# 测试连接
|
||
ssh -p 29418 renjianbo@101.43.95.130 gerrit version
|
||
|
||
# 如果成功,推送代码
|
||
cd /d/ttt/test-project
|
||
git push origin HEAD:refs/for/master
|
||
```
|
||
|
||
## 如果还是不行
|
||
|
||
如果方案一不行,尝试方案三(生成 ed25519 密钥),通常兼容性更好。
|
||
|