使用SFTP和SSH ForceCommand指令

我用这个ForceCommand指令设置了一个SSH服务器(称之为group2.fqdn ):

 Match Group group1 ForceCommand ssh -t group1.fqdn Match Group="*,!local,!group2,!root" ForceCommand ssh -t group3.fqdn 

这会打破不在group2用户的sftp 。 如何修改它以便sftp工作?

因此: group1 user1执行:

 sftp group2.fqdn 

然后他们(可能不得不两次输入密码)实际上是在向group1.fqdnsftp 。 可以这样做吗?


语境:
在我们的实验室中,我们为每个组都有一些Ubuntu服务器,但只有一个允许外部访问,因此所有组都必须登录到一个组的服务器,然后除了一个以外的所有服务器都被强制SSH连接到另一个服务器。 我们曾经使用自定义shell执行此操作,但我正在尝试使用可用的服务器选项而不是黑客。 自定义shell变体不允许SFTP,这也不允许,但我想以某种方式让SFTP适用于所有这些服务器。

使SFTP正常工作的技巧是将从客户端收到的SSH命令传递给服务器。 我在测试你在Unix和Linux上用 scpsftp做一个问题时会发生什么时发现了这个。

现在,我的配置如下:

 Match Group group1 ForceCommand /usr/local/bin/ssh_wrapper group1 Match Group="*,!local,!group2,!root" ForceCommand /usr/local/bin/ssh_wrapper group3 

其中/usr/local/bin/ssh_wrapper是:

 #! /bin/sh /usr/bin/ssh -t -o StrictHostKeyChecking=no $USER@${1:-default}.fqdn $SSH_ORIGINAL_COMMAND 

通过几个快速测试, sftpscp可以正常使用此配置。