启动启用调试消息的Windows OpenSSH服务器(-d)

我在尝试让随Windows 10一起提供的OpenSSH服务器正常工作时遇到了一个非常奇怪的问题。基本上,如果我通过运行"C:\Windows\System32\OpenSSH\sshd.exe"手动启动服务,一切都正常,但是当我通过Windows GUI或从Powershell运行"Start-service sshd"来启动服务时,我无法连接(我得到一个公钥被拒绝的错误 - 我已经在配置文件中禁用了密码登录,所以问题可能是在尝试读取"authorized_keys"文件时出现了权限问题)。我想通过阅读sshd守护程序的调试消息来更好地理解发生了什么,也就是通过手动添加"-d"选项启动时获得的内容,但是即使我在允许为服务指定启动参数的Windows GUI中添加了"-d"选项,我也不确定应该在哪里阅读这些消息(即事件查看器中没有这些消息)。如果有办法向"Start-service sshd" Powershell命令添加启动参数并在Powershell会话中读取这些消息,那就太好了...有什么建议吗?

@Ramhound:不,根据man页面上的说明,这是调试模式:-d' 调试模式。服务器将详细的调试输出发送到系统日志,并且不会将自己放入后台运行。服务器也不会进行分叉,并且只处理一个连接。此选项仅用于服务器的调试。多个-d选项会增加调试级别。最大值为3。无论如何,让我们专注于问题,谢谢。 - ad3angel1s
1sshd -E – 你能使用这个选项吗? - Kamil Maciorowski
我尝试过,但似乎没有任何效果,因为日志没有像我在 "-E" 选项之后指定的文件那样创建。 - ad3angel1s
2个回答

Windows OpenSSH服务器默认将日志记录到事件日志中。您应该在事件日志查看器中查找“应用程序和服务日志”下的OpenSSH。管理员日志显示错误,操作日志显示信息性消息。 OpenSSH日志由您的C:\ProgramData\ssh\sshd_config文件控制。条目SyslogFacility确定日志位置。 我从这里得到了答案:https://github.com/PowerShell/Win32-OpenSSH/wiki/Logging-Facilities。 事件日志可能会丢失一些额外的行,否则这些行将显示在日志文件中(例如,忽略authorized_keys的原因)。要查看它们,请编辑C:\ProgramData\ssh\sshd_config(例如,以管理员身份运行notepad.exe),然后设置:
SyslogFacility LOCAL0
LogLevel Debug3
重新启动OpenSSH SSH服务器服务,并期望日志出现在C:\ProgramData\ssh\logs\sshd.log中。

如果有人仍在努力解决问题中描述的具体潜在问题(当我启动它时,SSHD正常工作,但作为服务启动时却不正常),只需确保服务登录为您的帐户,而不是本地系统。

  1. 打开“服务”。
  2. 右键单击sshd -> 属性。
  3. 转到“登录”选项卡并点击“此帐户” -> 浏览...
  4. 在文本框中输入您的用户名,然后点击“检查名称”。您可能需要点击“高级...”并在其中找到。
  5. 一旦帐户配置正确,右键单击sshd并重新启动服务。