当 sshd 从命令行运行时,ssh 可以工作,但不能作为服务运行

当 sshd 从命令行运行时,ssh 可以工作,但不能作为服务运行

正如标题所说,当我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

相关内容