启动与系统组件

OpenSSH 客户端无法通过 SSH 连接到服务器 - Windows Server

· 52CE 我爱测

本文介绍在 Windows 系统上遇到与主机密钥算法不匹配相关的 OpenSSH 连接错误时出现的多种常见原因和解决方案。 通过安全外壳(SSH)连接到服务器时,可能会遇到以下错误: - 无法与 <服务器>协商:找不到匹配的主机密钥类型。 - 主机密钥算法:(不匹配) - 拒绝访问(公钥)。 - 服务器拒绝了密钥。 这些错误通常表示受支持算法不匹配、权限问题或安全问题。 原因 1:更新后的 OpenSSH 版本中禁用 RSA 算法 OpenSS

本文介绍在 Windows 系统上遇到与主机密钥算法不匹配相关的 OpenSSH 连接错误时出现的多种常见原因和解决方案。

通过安全外壳(SSH)连接到服务器时,可能会遇到以下错误:

无法与 <服务器>协商:找不到匹配的主机密钥类型。

主机密钥算法:(不匹配)

拒绝访问(公钥)。

服务器拒绝了密钥。

这些错误通常表示受支持算法不匹配、权限问题或安全问题。

原因 1:更新后的 OpenSSH 版本中禁用 RSA 算法

OpenSSH 8.8 及更高版本默认禁用不安全 ssh-rsa 算法,导致依赖于 RSA 密钥的旧客户端失败连接尝试。

决议

  1. 备份现有配置:

    Copy-Item "C:\ProgramData\ssh\sshd_config" "C:\ProgramData\ssh\sshd_config.bak" 
    
  2. 修改 sshd_config 文件:

    1. 以管理员身份打开记事本。

    2. 使用以下命令打开 sshd_config 文件:

      notepad "C:\ProgramData\ssh\sshd_config"
      
    3. 将以下行添加到文件末尾:

      PubkeyAcceptedAlgorithms +ssh-rsa 
      HostKeyAlgorithms +ssh-rsa
      
  3. 重启 OpenSSH 服务:

    Restart-Service sshd
    
  4. 验证 SSH 连接:

    ssh -v user@server.example.com 
    

原因 2:authorized_keys文件缺失或不正确或文件权限不正确

连接失败是由于缺少或不正确的 authorized_keys 文件或不正确的文件权限,生成“权限被拒绝”错误。

决议

  1. 确保文件 authorized_keys 存在:

    文件路径: C:\ProgramData\ssh\administrators_authorized_keys

    请将您的公钥正确放置在此文件中。

  2. 正确的文件权限:

    确保只有管理员对文件具有写入权限:

    icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F"
    
  3. 重启 OpenSSH 服务:

    net stop sshd 
    net start sshd 
    

原因 3:注册表中存储的私钥在会话中保留,从而导致安全风险

OpenSSH 的 ssh 代理服务存储的私钥在 Windows 注册表中的会话之间保持,这可能会导致安全风险。

决议

  • 生成私钥时,请使用强加密和通行短语。
  • 通过用户权限限制注册表访问。
  • 定期从官方来源(例如 GitHub)更新 OpenSSH。
  • 应定期审核注册表项,并在不需要时清除敏感键。

可选注册表调整

通过注册表策略安全地管理 RSA 密钥:

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\SSH-Server' -Name AllowRSAKey -Value 1 -Type DWORD 
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Services\SSH-Server\Parameters' -Name AllowRSAKey -Value 1 -Type DWORD 

建议的常规安全做法

  • 保护用户帐户并维护严格的文件权限。
  • 定期更新 OpenSSH 以包含最新的安全修补程序。
  • 尽可能使用更强大的算法,例如ED25519或 ECDSA。
  • 让用户了解安全密钥管理做法。

疑难解答日志和诊断

若要在连接尝试期间收集详细的调试日志,请使用详细 SSH 命令:

ssh -vvv user@hostname

分析从工作和非工作环境收集的日志,以确定配置差异。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。