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

标签 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 转发的唯一方法是禁用 ForceCommandChrootDirectory 指令。

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

我的理想情况是:

  • /bin/false(或等效)作为 shell
  • chroot 到主目录
  • sftp 工作
  • 端口转发工程
  • 没有别的工作

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

提前致谢。

最佳答案

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

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

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

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

再次感谢!

关于linux - 在 chroot 环境中使用 SSH 进行 SFTP 和端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683495/

相关文章:

macos - 从 ssh session 到 localhost 的 SCP 文件

java - 如何将文件从远程服务器的目录A移动到目录B?

android - 有安卓的PCI卡吗?

bash - 将嵌套引用的变量传递给远程 ssh 命令

ssh - Jenkins,SSH 插件,传输了 0 个文件

java - 调用 shell 脚本包含来自 java 的 SSH

sftp - PHPStorm - 将外部 SFTP 文件夹链接到项目中

c - 如何从 $1 重新开始命名 GDB 的内部变量?

c - 在 64 位 x86 平台上比较 PIE、PIC 代码和可执行文件有什么区别?

linux - 在 Bash 脚本中使用 Expect 为 SSH 命令提供密码