You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows间OpenSSH Host Based Authentication配置失败求助

Windows 到 Windows OpenSSH 主机基认证配置与排障

服务端(远程Windows主机)配置步骤

  1. 修改sshd_config配置文件

    • 打开C:\ProgramData\ssh\sshd_config,找到以下配置项并修改:
      HostbasedAuthentication yes
      HostbasedUsesNameFromPacketOnly yes
      PubkeyAuthentication yes
      
      (HostbasedUsesNameFromPacketOnly yes跳过反向DNS解析,适配Windows环境下的主机名/IP直接匹配)
    • 保存文件后,重启OpenSSH服务:
      Restart-Service sshd
      
  2. 配置主机信任文件

    • 在C:\ProgramData\ssh目录下创建shosts.equiv文件,添加客户端主机名(或IP),例如:
      WIN-CLIENT-PC
      # 或使用IP
      192.168.1.100
      
    • 同样在C:\ProgramData\ssh目录下创建known_hosts文件,添加客户端主机的公钥(公钥位于客户端的C:\Users\<用户名>\.ssh\id_rsa.pub),格式为:
      WIN-CLIENT-PC ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
      
    • 修复文件权限(权限过松会被sshd忽略):
      icacls "C:\ProgramData\ssh\shosts.equiv" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
      icacls "C:\ProgramData\ssh\known_hosts" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
      

客户端(本地Windows主机)配置步骤

  1. 生成主机密钥对(未生成时执行)

    ssh-keygen -t rsa
    

    一路回车,密钥会生成在C:\Users\<用户名>\.ssh\目录下。

  2. 修改ssh_config配置

    • 在C:\Users\<用户名>\.ssh目录下创建config文件,添加:
      Host <远程主机名或IP>
        HostbasedAuthentication yes
        EnableSSHKeysign yes
      
  3. 确保ssh-keysign可用

    • 确认ssh-keysign.exe位于C:\Windows\System32\OpenSSH\目录下,且该路径已加入系统环境变量(默认已配置)。

报错排障(针对Permission denied (publickey,keyboard-interactive,hostbased))

  • 检查服务端sshd_config是否生效:执行ssh -v <远程用户名>@<远程主机>查看verbose输出,确认hostbased认证被触发。
  • 查看服务端OpenSSH日志:打开事件查看器→应用程序和服务日志→OpenSSH→Operational日志,日志会明确指出失败原因(如权限问题、主机名不匹配、公钥未找到等)。
  • 验证文件权限:服务端的shosts.equiv和known_hosts不能给普通用户写入权限,否则sshd会拒绝加载。
  • 确认主机名一致性:客户端连接时使用的主机名/IP必须与服务端shosts.equiv、known_hosts中的条目完全匹配。

内容的提问来源于stack exchange,提问作者azhar rahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 22:20:31