# SSH 配置详细步骤 ## 问题 SSH 签名算法不匹配,需要启用兼容的算法。 ## 解决方案:创建 SSH 配置文件 ### 步骤 1:检查配置文件是否存在 在 Git Bash 中执行: ```bash # 检查配置文件是否存在 ls -la ~/.ssh/config # 如果文件不存在,会显示 "No such file or directory" ``` ### 步骤 2:创建配置文件 ```bash # 创建配置文件 touch ~/.ssh/config # 设置正确的权限(重要!) chmod 600 ~/.ssh/config ``` ### 步骤 3:编辑配置文件 使用文本编辑器打开配置文件: ```bash # 使用 notepad(Windows) notepad ~/.ssh/config # 或使用 nano(Git Bash) nano ~/.ssh/config # 或使用 vim(Git Bash) vim ~/.ssh/config ``` ### 步骤 4:添加配置内容 在文件中添加以下内容(如果文件已有内容,追加到文件末尾): ``` Host 101.43.95.130 Port 29418 PubkeyAcceptedKeyTypes +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa ``` **重要**: - `Host` 后面是服务器 IP 或域名 - `Port` 后面是 SSH 端口(29418) - 每行前面有 4 个空格或 1 个 Tab(保持缩进) ### 步骤 5:保存文件 - 如果使用 notepad:`Ctrl+S` 保存,然后关闭 - 如果使用 nano:`Ctrl+O` 保存,`Enter` 确认,`Ctrl+X` 退出 - 如果使用 vim:按 `i` 进入插入模式,编辑后按 `Esc`,然后输入 `:wq` 保存退出 ### 步骤 6:验证配置 ```bash # 查看配置文件内容 cat ~/.ssh/config ``` 应该显示: ``` Host 101.43.95.130 Port 29418 PubkeyAcceptedKeyTypes +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa ``` ### 步骤 7:测试连接 ```bash # 测试 SSH 连接 ssh -p 29418 renjianbo@101.43.95.130 gerrit version ``` 如果成功,会显示 Gerrit 版本信息,例如: ``` gerrit version 3.3.8 ``` ### 步骤 8:推送代码 ```bash cd /d/ttt/test-project git push origin HEAD:refs/for/master ``` ## 如果还是不行 ### 方法 A:使用命令行参数(临时) ```bash # 测试连接 ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa -p 29418 renjianbo@101.43.95.130 gerrit version # 推送代码 GIT_SSH_COMMAND="ssh -o PubkeyAcceptedKeyTypes=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa" git push origin HEAD:refs/for/master ``` ### 方法 B:检查公钥是否正确添加 1. 访问:`http://101.43.95.130:8080/#/settings/ssh-keys` 2. 确认您的公钥在列表中 3. 确认公钥状态为 "Valid" ### 方法 C:重新生成 ed25519 密钥 如果 RSA 密钥一直有问题,可以生成 ed25519 密钥: ```bash # 生成新的 ed25519 密钥 ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519 # 查看新公钥 cat ~/.ssh/id_ed25519.pub ``` 然后将新公钥添加到 Gerrit。 ## 常见问题 ### Q: 配置文件权限错误 ```bash # 修复权限 chmod 600 ~/.ssh/config chmod 700 ~/.ssh ``` ### Q: 配置文件格式错误 确保: - 每行前面有正确的缩进(4 个空格或 1 个 Tab) - 没有多余的空格或特殊字符 - 文件使用 UTF-8 编码 ### Q: 配置不生效 ```bash # 清除 SSH 已知主机(如果需要) ssh-keygen -R [101.43.95.130]:29418 # 重新测试 ssh -v -p 29418 renjianbo@101.43.95.130 gerrit version ```