Unable to negotiate with 192.168.101.100 port 22: no matching host key type found. Their offer: ssh-rsa
时间: 2025-05-16 07:43:29 浏览: 39
### 解决方案
当遇到 `no matching host key type found` 的错误时,通常是因为客户端和服务器之间的主机密钥算法不兼容。现代版本的 OpenSSH 默认禁用了某些旧的安全算法(如 `ssh-rsa` 和 `ssh-dss`),这可能导致连接失败。
#### 配置调整方法
可以通过修改 SSH 客户端配置文件来支持更广泛的主机密钥类型:
1. **编辑 SSH 客户端配置文件**
打开或创建用户目录下的 `.ssh/config` 文件或者全局配置 `/etc/ssh/ssh_config`,并添加以下内容以启用额外的主机密钥类型:
```plaintext
Host *
PubkeyAcceptedKeyTypes=+ssh-rsa
HostKeyAlgorithms=+ssh-rsa
```
这些设置允许客户端接受 `ssh-rsa` 类型的公钥[^1]。
2. **验证服务器支持的密钥类型**
如果仍然无法正常工作,则可以尝试通过命令行查看服务器实际支持哪些密钥类型:
```bash
ssh -Q key
```
此命令会列出当前安装的 OpenSSH 支持的所有密钥类型。如果发现服务器仅提供较老的密钥类型(例如 `ssh-rsa` 或 `ssh-dss`),则需要进一步确认其安全性是否满足需求[^2]。
3. **升级服务器上的 OpenSSH 版本**
对于长期解决方案来说,建议更新远程服务器的操作系统及其默认使用的 OpenSSH 软件包至最新稳定版。例如,在基于 Debian 的发行版上执行如下操作即可完成此目的:
```bash
sudo apt update && sudo apt install --only-upgrade openssh-server
```
4. **针对 Ubuntu 用户特别注意的地方**
若是从较低版本(比如 20.04 LTS)迁移到较高版本(例如 22.04 LTS),可能会因为新版本移除了对传统加密方式的支持而引发此类问题。此时除上述措施外还需留意是否有其他关联服务受到影响[^3]。
5. **关于 pip 镜像源的选择影响到 Python 库获取的情况说明**
尽管该部分内容与主题无直接关系,但从引用材料来看提到过因选用豆瓣 PIP 镜像站点造成特定版本资源缺失的现象。因此提醒使用者务必挑选可靠且同步频率高的第三方镜像地址作为备选方案之一[^4]。
```python
import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('hostname', username='username', password='password',
disabled_algorithms={'pubkeys': ['rsa-sha2-512']})
```
以上代码片段展示了如何利用 Paramiko 模块建立 SSH 连接的同时指定忽略部分可能引起冲突的新一代哈希函数族标准(RSA-SHA2)。
---
阅读全文
相关推荐

















