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

OpenSSH启用PasswordAuthentication仍连接被拒无密码提示

Windows OpenSSH 密码认证不弹输入框直接拒绝故障排查

核心问题定位

从你贴的完整sshd_config内容可以直接定位核心原因:你以为已经生效的配置项全部处于注释状态——OpenSSH配置中行首带#的条目不会被加载,会使用默认参数,直接导致密码认证逻辑没有被正确开启:

  • 你写的PermitRootLogin yes、PubkeyAuthentication no、PasswordAuthentication yes、LogLevel VERBOSE等配置前面全有#注释符,实际根本没生效
  • Windows版OpenSSH的密码认证强依赖KbdInteractiveAuthentication选项开启,这个选项在你当前配置里也是注释状态,默认值适配有问题,所以服务端返回的可认证方式列表里没有password选项,客户端自然不会弹出密码输入提示,试完公钥、空的交互认证后直接返回权限拒绝
  • 另外Windows系统默认没有root用户,你尝试用root账号连接从一开始就不可能成功。

针对你问的OpenSSH服务登录身份问题:服务列表里的OpenSSH SSH Server必须选择Local System Account(本地系统账户),不要指定单独的用户账号,否则会出现权限不足无法读取本地用户认证库、无法校验账号密码的问题。

修复步骤

  1. 打开sshd配置文件,路径为C:\ProgramData\ssh\sshd_config,把核心配置项前面的#全部删除,确保配置生效,核心配置参考如下:
    # 不要开root登录,Windows默认无root用户
    PermitRootLogin no
    # 临时关闭公钥认证,后续要开再改
    PubkeyAuthentication no
    # 开启密码认证
    PasswordAuthentication yes
    # 必须开启键盘交互认证,否则Windows下不弹密码框
    KbdInteractiveAuthentication yes
    LogLevel VERBOSE
    UsePAM no
    # SFTP子系统路径改成Windows版的,原来的Linux路径不影响登录但会导致SFTP不可用
    Subsystem   sftp    sftp-server.exe
    
  2. 按Win+R输入services.msc打开服务管理器,找到OpenSSH SSH Server服务,右键进入「属性」-「登录」标签页,选择「本地系统账户」,保存设置。
  3. 重启OpenSSH SSH Server服务让配置生效。
  4. 先在sshd所在的Windows主机本地做验证,执行命令ssh 你的Windows本地登录用户名@127.0.0.1,如果能正常弹出密码输入提示、输入正确密码可以登录,说明服务端配置正常,再从公网发起连接测试。

备用排查点(本地验证失败时检查)

  • 你用来登录的Windows本地账号必须设置非空密码,空密码默认被OpenSSH拒绝登录。
  • 检查C:\ProgramData\ssh目录权限,确保SYSTEM账户拥有完全控制权限,不要给普通用户开放该目录的写入权限,否则sshd会出于安全考虑拒绝读取配置。
  • 检查Windows Defender防火墙的入站规则,确认22端口的TCP协议放通,不要只放通UDP。
  • 如果本地验证正常但公网连接失败,检查路由器端口转发规则是否正确映射TCP 22端口到内网Windows主机的22端口,确认内网IP地址没有填错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:57:20