在chroot的环境中使用SSH进行SFTP和端口转发

时间:2015-02-23 21:09:32

标签: linux ssh sftp portforwarding chroot

我的目标是让这些事情奏效:

  • 用户可以通过sftp连接到服务器。他只能从他的主目录中读取内容(因此,他可以使用 sftp user @ host
  • 用户可以连接到服务器并打开远程端口进行端口转发(因此,他可以使用 ssh -R remote_port:localhost:port user @ host
  • 用户可以做除了这两件事之外的任何事情。他不应该有正常的shell访问权限,也不能运行命令。

我可以让两种情况同时发挥作用,但不能同时发生。

我的/ etc / sshd_config是:

Match Group restricted
    ChrootDirectory /home/restricted/users
    AllowAgentForwarding no
    X11Forwarding no
    AllowTcpForwarding yes
    ForceCommand internal-sftp

显然这是sftp的工作案例。使用此配置,无法打开远程端口进行端口转发。

目前允许tcp转发的唯一方法是禁用 ForceCommand ChrootDirectory 指令。

另外,我必须将shell更改为/ bin / bash以允许端口转发。

我的梦想情况是:

  • / bin / false(或等效)作为shell
  • chrooted到主目录
  • sftp作品
  • 端口转发工作
  • 没有其他工作

这甚至可能吗?如果是这样,我需要做什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

感谢 Charles Duffy ,我知道我做错了什么。上面的配置确实确实有效,但是,我必须在我的ssh客户端请求中添加“-N”:

ssh -N -R remote_port:localhost:port user@host

这也适用于shell设置为/ bin / false

很抱歉选择了错误的部分,我下次会尝试使用unix.stackexchange。

再次感谢!