分离 SSH 和 SFTP

Separate SSH and SFTP

是否可以将 SSH 和 SFTP 分开?

例如,让 SFTP 监听 22 端口,SSH 监听 2222 端口?

我已经分开了SFTP和SSH用户列表,目的是让SFTP用户连接到端口22,并让SSH监听更高的端口,比如2222。

因为两者本质上都是 SSH 的一部分,所以我找不到实现此目的的方法。

提前致谢!

您可以通过以下方式完成此操作:

  1. 创建 second/separate SSH 服务(这将根据您使用的初始系统以不同方式完成);

  2. 并将其配置为 only allow SFTP. You might want to chroot SFTP 服务,以防止一些可能被用户用来获取 shell 返回的技巧。

在单独的端口上添加第二个实例 运行 绝对可行,但随后您必须告诉用户使用另一个端口 - 他们不会这样做。您还可以使用 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?

其他问题是正确的,但您可以设置 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