解决Git error: no matching host key type found. Their offer: ssh-rsa

在Git的安装目录下编辑SSH配置文件,追加Host*及相关加密算法设置(如diffie-hellman-group1-sha1,ssh-dss,ssh-rsa),保存后,使用gitclone时按提示操作即可。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Windows 的修改SSH配置文件

在Git安装目录找到此文件

 编辑此文件,末尾添加如下代码:

Host *
    KexAlgorithms +diffie-hellman-group1-sha1
    HostkeyAlgorithms +ssh-dss,ssh-rsa
    PubkeyAcceptedKeyTypes +ssh-dss,ssh-rsa

然后保存,关闭即可。

测试git clone,如果出现弹窗,选择yes输入git密码即可。

### 问题分析 SSH 连接报错 `no matching host key type found. Their offer: ssh-rsa,ssh-dss` 表示客户端与服务器之间无法就使用的主机密钥算法达成一致。通常,较新的 OpenSSH 客户端默认禁用了 `ssh-rsa` 和 `ssh-dss` 等旧的密钥类型,以提高安全性。如果远程服务器仅提供这些算法,则连接将失败。 ### 解决方法 可以通过在客户端配置中显式启用 `ssh-rsa` 来解决此问题。以下是几种常见场景下的配置方式: #### 1. 修改 SSH 客户端配置文件 在本地用户的 `~/.ssh/config` 文件中添加以下内容,以启用 `ssh-rsa`: ```ssh-config Host * HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa ``` 此配置将对所有 SSH 连接生效,并允许使用 `ssh-rsa` 算法进行主机密钥验证和公钥认证[^4]。 #### 2. 使用命令行参数临时启用 如果仅需临时连接目标服务器,可以在 `ssh` 命令中直接指定启用 `ssh-rsa`: ```bash ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa user@hostname -p 22 ``` 该方式适用于测试连接或避免修改全局配置[^5]。 #### 3. Git 用户的配置方法 对于使用 Git 并通过 SSH 协议克隆仓库的用户,可以在 SSH 配置中为特定主机添加支持: ```ssh-config Host git.example.com HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa ``` 这样可以在不影响其他 SSH 连接的前提下,确保 Git 操作顺利进行[^3]。 #### 4. 使用 Python 的 paramiko 库连接 如果使用 Python 的 `paramiko` 库进行 SSH 连接,可以修改其默认的密钥交换和公钥算法以支持 `ssh-rsa`: ```python import paramiko # 启用支持的 KEX 和 pubkey 算法 paramiko.kex_group.KexGroup1_SHA1.enabled = True paramiko.transport.Transport._preferred_kex = ('diffie-hellman-group1-sha1',) paramiko.transport.Transport._preferred_pubkey = ('ssh-rsa',) # 建立连接 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( hostname='your.hostname', port=22, username='your_username', password='your_password' ) # 执行命令并关闭连接 stdin, stdout, stderr = ssh.exec_command('ls -l') print(stdout.read().decode()) ssh.close() ``` 该方法可临时启用 `ssh-rsa` 算法,适用于需要通过脚本连接旧版 SSH 服务器的场景[^1]。 ### 注意事项 - 启用 `ssh-rsa` 可能会带来安全风险,建议仅在必要时使用,并尽快升级服务器端的 SSH 配置以支持更安全的算法。 - 若服务器支持更新的密钥算法(如 `rsa-sha2-256` 或 `rsa-sha2-512`),应优先使用这些更安全的选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值