单独的SSH和SFTP

时间:2016-05-09 08:56:46

标签: linux ssh sftp

是否可以将SSH和SFTP分开?

例如,让SFTP在端口22上侦听,在端口2222上侦听SSH吗?

我已经分离了SFTP和SSH用户列表,目的是允许SFTP用户在端口22上连接,并在更高端口(如2222)上进行SSH侦听。

由于两者基本上都是SSH的一部分,我无法找到实现这一目标的方法。

提前致谢!

3 个答案:

答案 0 :(得分:9)

其他问题是正确的,但您可以设置openSSH的单个实例来侦听两个端口并在一个端口上处理SFTP连接,在另一个端口上处理SSH连接:

Port 22
Port 2222
Subsystem sftp internal-sftp
Match LocalPort 22
    ChrootDirectory /sftp/root/dir
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

答案 1 :(得分:4)

添加在单独端口上运行的第二个实例肯定有效,但是你必须处理告诉用户使用另一个端口 - 他们不会。您还可以使用match usermatch group行强制用户和/或群组仅限sftp。

sshd-config中,您可以执行类似

的操作
Subsystem sftp internal-sftp
...
Match Group sftponly
        ChrootDirectory /sftp/root/dir
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

另见Linux shell to restrict sftp users to their home directories?

答案 2 :(得分:0)

您可以通过以下方式执行此操作:

  1. 创建第二个/单独的SSH服务(这将根据您使用的init系统以不同方式完成);

  2. 并将其配置为only allow SFTP。您可能希望chroot SFTP服务,以防止用户可以使用某些技巧来获取shell。