我正在尝试在 Windows Server 2019 上的 OpenSSH 上运行基于密钥的身份验证。当前,我们根据 Microsoft 文档安装了 Open SSH,并且可以使用我们的 AD 登录名使用密码验证进行登录,但是当按照基于密钥的身份验证的说明进行操作时,以下错误开始弹出。
在客户端我们得到以下信息:
client_loop: send disconnect: Connection reset
谷歌搜索结果似乎认为这是一种超时,但它在我们收到提示之前就瞬间发生了。
在主机端,我们在事件查看器中看到以下内容:
sshd: fatal: fork of unprivileged child failed
谷歌搜索结果显示该流程已被用尽,但在我们的环境下这似乎不太可能。
我们的设置是按照文档找到的标准这里,对 sshd 配置所做的唯一更改是启用密钥身份验证,其他一切都是安装后的默认设置。很高兴提供任何其他信息,不确定还有什么可能相关。
编辑:做了一些深入挖掘,并通过详细的输出看起来公钥已被接受,但它在之后立即关闭连接:
Authenticated to <ip> ([<ip>]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: ENABLE_VIRTUAL_TERMINAL_INPUT is supported. Reading the VTSequence from console
debug1: ENABLE_VIRTUAL_TERMINAL_PROCESSING is supported. Console supports the ansi parsing
client_loop: send disconnect: Connection reset
即使我没有提供带有 -i 的密钥,它现在也会尝试基于密钥的身份验证,这很奇怪。
答案1
我不知道这是否适用,但当我们为 Windows 设置 OpenSSH 时,微软的文档和开箱即用的功能不起作用。
我们使用这些来源和说明来正确设置它:
关于配置我们的 sshd_config 包含以下内容:
AuthorizedKeysFile .ssh/authorized_keys
Subsystem sftp sftp-server.exe
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
sftp 设置,因为我们主要用它来移动文件(请不要问为什么)。