2015-02-23 83 views
0

我的目标是让这些东西工作:在chroot的环境中使用两个SFTP和端口转发SSH

  • 用户可以通过SFTP连接到服务器。他只能从他的家目录中读取内容(因此,他可以使用SFTP用户@主机
  • 用户可以连接到服务器,并打开一个远程端口的端口转发(因此,他可以使用SSH -R REMOTE_PORT:本地主机:端口用户@主机
  • 用户可以而不是做任何事情,但除了这两件事。他不应该有正常的shell访问权限,并且不应该能够运行命令。

我可以让任何一种情况下工作,但不是在同一时间。

我的/ etc/sshd_config的是:

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

显然,这是SFTP的工作情况。使用此配置,不可能打开远程端口进行端口转发。

对目前我允许TCP转发禁用ChrootDirectory指令的唯一方法ForceCommand和。

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

我的梦想情况是:

  • /斌/假(或同等学历)为壳
  • chroot的主目录
  • SFTP工作
  • 端口转发工作
  • 没有别的作品

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

在此先感谢。

+0

此网站用于编程问题,而不是服务器配置。 – 2015-02-23 21:11:04

+0

您可以在使用Paramiko或类似库编写的自定义SSH服务器中实现此功能。在这个开发工作中你遇到的问题可能在这里讨论。:) – 2015-02-23 21:41:15

+0

(具体来说,Paramiko的Python版本; Java端口不支持SFTP服务器)。 – 2015-02-23 21:41:49

回答

2

感谢Charles Duffy,我知道我做错了什么。上述配置确实确实是工作,但是,我有一个“-N”添加到我的ssh客户端的请求:

ssh -N -R remote_port:localhost:port [email protected] 

但这也与shell设置为/ bin工作/假

对不起关于选择错误的部分,下次我将尝试unix.stackexchange。

再次感谢!