我想在 上执行一个脚本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,因此批处理脚本终止,会话结束。这种理解准确吗?