Cloning into 'tz-cloud-sale-new'... Unable to negotiate with 106.52.160.162 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.
时间: 2025-05-30 20:59:55 浏览: 30
### SSH 密钥类型不匹配导致 Git 克隆失败的解决方案
当遇到 `ssh no matching host key type found` 错误时,通常是因为服务器端支持的主机密钥算法与客户端期望的算法之间存在差异。这种情况下,可以通过调整 SSH 客户端配置来解决问题。
#### 调整 SSH 配置文件
在本地机器上的 `.ssh/config` 文件中添加或修改以下内容:
```bash
Host github.com
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
```
此更改允许客户端接受 `ssh-rsa` 类型的密钥[^1]。如果目标仓库托管于其他服务提供商,则需将 `github.com` 替换为目标域名。
#### 更新 OpenSSH 版本
某些旧版本的 OpenSSH 可能默认禁用了较弱的安全算法(如 `ssh-rsa`)。升级到最新版 OpenSSH 是一种更安全的选择,可以从根本上解决兼容性问题。
对于基于 Debian 的系统,运行以下命令更新软件包:
```bash
sudo apt update && sudo apt install openssh-client
```
对于 RedHat/CentOS 系统,可使用 yum 或 dnf 工具完成安装:
```bash
sudo yum update openssh-clients
# 或者
sudo dnf update openssh-clients
```
#### 手动指定算法顺序
如果不希望永久修改全局设置,也可以通过 `-o` 参数临时覆盖默认行为,在执行 Git 命令时附加选项:
```bash
GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa" git clone [email protected]:user/repo.git
```
这种方法适用于不想改动现有配置的情况,同时能够灵活应对不同环境下的需求[^1]。
#### 创建新的密钥对并上传公钥至远程服务器
有时更换成更强壮的加密方式也能规避此类冲突。例如生成 Ed25519 格式的私钥/公钥组合,并将其提交给目标平台作为认证依据之一:
```bash
$ ssh-keygen -t ed25519 -C "[email protected]"
...
$ cat ~/.ssh/id_ed25519.pub | pbcopy # 复制新生成的公钥以便粘贴到网站界面里去
```
随后登录对应的代码托管站点(像 GitHub),导航到账户设置中的 SSH Keys 页面,新增刚才复制的内容进去即可生效[^1]。
---
阅读全文
相关推荐



















