正如标题所说,当我sshd
从命令行(C:\Windows\OpenSSH\sshd.exe
)运行时,我的无密码登录可以localhost
完美运行,但如果我将其作为服务运行(仔细检查路径并且它与上面相同)我没有从服务中得到任何错误,但连接到它会出现此错误:
Connection reset by 127.0.0.1 port 22
身份验证代理既没有作为服务处于活动状态,也没有从命令行启动,公钥应该被正确复制(再次,连接到命令行sshd
有效)并且 OpenSSH 是从最新的 Windows 10 安装的可选功能中安装的。
也许 ssh 密钥文件的权限错误?该服务似乎设置为作为“本地服务”运行,不管它是什么,我是否需要找出实际的用户名并赋予它完全控制权C:\ProgramData\ssh
?
这是尝试连接服务时失败日志的尾端sshd
:
debug1: Authentication succeeded (publickey).
Authenticated to localhost ([127.0.0.1]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug1: console supports the ansi parsing
debug3: Successfully set console output code page from:437 to 65001
debug3: Successfully set console input code page from:437 to 65001
debug3: recv - from CB ERROR:10054, io:0000016F1866FEE0
debug3: send packet: type 1
debug3: send - WSASend() ERROR:10054, io:0000016F1866FEE0
Connection reset by 127.0.0.1 port 22
debug3: Successfully set console output code page from 65001 to 437
debug3: Successfully set console input code page from 65001 to 437
如您所见,身份验证成功,然后发生了一些事情并且连接被拒绝。
答案1
当对等应用程序重置连接时会发生错误 10054,这通常是由于防火墙配置不正确造成的。
您可以尝试暂时禁用 Windows 防火墙,以查明是否确实是问题所在。
要在 Windows 防火墙中打开端口 22,最简单的方法可能是以管理员身份运行 PowerShell 并输入以下命令:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22