【问题标题】:Using SSH for both SFTP AND Port Forwarding in a chroot'ed environment [closed]在 chroot 环境中使用 SSH 进行 SFTP 和端口转发 [关闭]
【发布时间】:2015-04-25 08:23:52
【问题描述】:

我的目标是让这些事情发挥作用:

  • 用户可以通过 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 转发的唯一方法是禁用 ForceCommandChrootDirectory 指令。

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

我的理想情况是:

  • /bin/false(或等效)作为 shell
  • chroot 到主目录
  • sftp 有效
  • 端口转发工作
  • 其他方法都行不通

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

提前致谢。

【问题讨论】:

  • 这个网站是编程问题,不是服务器配置。
  • 您可以在使用 Paramiko 或类似库编写的自定义 SSH 服务器中实现此功能。您在此开发工作中遇到的问题可能是这里的主题。 :)
  • (具体是 Python 版本的 Paramiko;Java 端口不支持 SFTP 服务器)。
  • ...也就是说,从最终用户配置的角度来看,您是否尝试过在客户端使用 ssh -N,以避免请求 shell(这显然是在此配置中不允许)?请注意,我还没有查看源代码以查看这是否可能,但它更有可能起作用。 :)
  • 哇,我花了好几个小时试图找到正确的服务器配置,而我所要做的只是添加一个 -N。感觉有点尴尬 ;) 感谢 Charles Duffy 的帮助。

标签: linux ssh sftp portforwarding chroot


【解决方案1】:

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

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

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

抱歉选错部分了,下次我要试试unix.stackexchange。

再次感谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2015-02-09
    • 2012-02-27
    • 1970-01-01
    • 2016-02-14
    • 2018-05-28
    相关资源
    最近更新 更多