在 Windows 版 OpenSSH 中,捕获脚本中的 SSH_ORIGINAL_COMMAND 以启动 SFTP 会话

在 Windows 版 OpenSSH 中,捕获脚本中的 SSH_ORIGINAL_COMMAND 以启动 SFTP 会话

我想在 上执行一个脚本Windows OpenSSH server,然后允许执行发出的任何原始命令(最有可能SFTP)。在 上Linux,它只涉及使用ForceCommand中的指令sshd_config来运行.sh,并使用传递$SSH_ORIGINAL_COMMAND给要使用 执行的脚本的环境变量sh -c

sshd_配置

<rest of it>
Match user <someuser>
ForceCommand <somescript>.sh

一些脚本

sh -c "$SSH_ORIGINAL_COMMAND"

然而,在Windows OpenSSH服务器上,我不确定应该如何运行。我想我可以运行一些批处理脚本,ForceCommand但我不确定如何$SSH_ORIGINAL_COMMAND从脚本中捕获和执行它们。

我在网上查过,但没有找到这样的例子。Windows OpenSSH 是否支持此功能?如果支持,我该怎么做?

更新 -

我曾尝试使用“%SSH_ORIGINAL_COMMAND%”,但调用脚本如下:

sshd_配置

Match user <someuser>
ForceCommand <-Accesible_Directry->/testscript.bat

测试脚本

start %SSH_ORIGINAL_COMMAND%

带引号或不带引号似乎不起作用。在文件中sshd_config或文件中的某个地方调用此方法时可能存在语法问题batch。报告收到的数据包WinSCP太大。SFTP

更新2

我制作了批处理脚本如下-

@echo off
%SSH_ORIGINAL_COMMAND%

这适用于SFTP,会话已启动,但SSH连接已终止(如果这是预期用途)。如果我理解正确,则通过连接ssh本身就是已启动的,然后执行脚本(SSH_ORIGINAL_COMMAND我认为是空白的,因为ssh根据https://github.com/PowerShell/Win32-OpenSSH/issues/737,因此批处理脚本终止,会话结束。这种理解准确吗?

相关内容