我已经使用以下指令设置了一个 SSH 服务器(称之为group2.fqdn
)ForceCommand
:
Match Group group1
ForceCommand ssh -t group1.fqdn
Match Group="*,!local,!group2,!root"
ForceCommand ssh -t group3.fqdn
sftp
对于不在 的用户,此操作会中断group2
。我该如何修改才能使其sftp
正常运行?
因此:user1
of 的group1
作用是:
sftp group2.fqdn
然后他们(可能必须输入两次密码)实际上正在执行sftp
。group1.fqdn
这可以做到吗?
背景:
在我们的实验室中,每个组都有几台 Ubuntu 服务器,但只有一台允许外部访问,因此所有组都必须登录到一个组的服务器,然后除一台之外的所有组都必须通过 SSH 连接到另一台服务器。我们过去使用自定义 shell 来做到这一点,但我正在尝试使用可用的服务器选项而不是黑客攻击。自定义 shell 变体不允许 SFTP,这个也不允许,但我想以某种方式让 SFTP 适用于所有这些服务器。
答案1
让 SFTP 正常工作的诀窍是将从客户端收到的 SSH 命令原封不动地传递给服务器。我在测试这样做scp
或sftp
关于 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
良好。