使用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.fqdn
做sftp
。 可以这样做吗?
语境:
在我们的实验室中,我们为每个组都有一些Ubuntu服务器,但只有一个允许外部访问,因此所有组都必须登录到一个组的服务器,然后除了一个以外的所有服务器都被强制SSH连接到另一个服务器。 我们曾经使用自定义shell执行此操作,但我正在尝试使用可用的服务器选项而不是黑客。 自定义shell变体不允许SFTP,这也不允许,但我想以某种方式让SFTP适用于所有这些服务器。
使SFTP正常工作的技巧是将从客户端收到的SSH命令传递给服务器。 我在测试你在Unix和Linux上用 scp
或sftp
做一个问题时会发生什么时发现了这个。
现在,我的配置如下:
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
通过几个快速测试, sftp
和scp
可以正常使用此配置。