将 SFTP 与 SSH ForceCommand 指令结合使用

将 SFTP 与 SSH ForceCommand 指令结合使用

我已经使用以下指令设置了一个 SSH 服务器(称之为group2.fqdnForceCommand

Match Group group1
       ForceCommand ssh -t group1.fqdn

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

sftp对于不在 的用户,此操作会中断group2。我该如何修改才能使其sftp正常运行?

因此:user1of 的group1作用是:

sftp group2.fqdn

然后他们(可能必须输入两次密码)实际上正在执行sftpgroup1.fqdn这可以做到吗?


背景:
在我们的实验室中,每个组都有几台 Ubuntu 服务器,但只有一台允许外部访问,因此所有组都必须登录到一个组的服务器,然后除一台之外的所有组都必须通过 SSH 连接到另一台服务器。我们过去使用自定义 shell 来做到这一点,但我正在尝试使用可用的服务器选项而不是黑客攻击。自定义 shell 变体不允许 SFTP,这个也不允许,但我想以某种方式让 SFTP 适用于所有这些服务器。

答案1

让 SFTP 正常工作的诀窍是将从客户端收到的 SSH 命令原封不动地传递给服务器。我在测试这样做scpsftp关于 Unix 和 Linux 的一个问题

现在,我的配置如下:

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良好。

相关内容