Я понимаю, что в Интернете было множество других потоков, разрешающих OpenSSH SFTP-соединения через настраиваемый порт. Я ударил их не всех, но много. И не смог заставить его работать в моем конкретном случае :)

Вот с чем я боролся:

  • CentOS Linux, выпуск 7.6.1810 (Core) , на AWS
  • OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 января 2017 г.
  • Требования:
    • Разрешен только 1 sshdэкземпляр
    • Порт 22: SSH
    • Порт 2222: SFTP
    • Пользователи Chrooted SFTP
  • Вверху у /etc/ssh/sshd_configменя:

    Port 22
    Port 2222
    
  • Сервер SFTP, настроенный с использованием johanmeiringроли Ansible ansible-sftp

    • Затем я изменил, /etc/ssh/sshd_configчтобы изменить эту Matchстроку с:

      Match Group sftpusers
      

      к:

      Match Group sftpusers LocalPort 2222
      

      в надежде , что пользователи группы sftpusersбудет * только * возможность SFTP-подключение через порт 2222

    • Это больше , /etc/ssh/sshd_configчто я думаю , что имеет отношение:

      Port 22
      Port 2222
      ...
      Subsystem sftp internal-sftp -f AUTH -l VERBOSE
      ...
      Match Group sftpusers LocalPort 2222
          ChrootDirectory %h
          AllowTCPForwarding no
          X11Forwarding no
          ForceCommand internal-sftp
          PasswordAuthentication no
      

На самом деле произошло то, что пользователи SFTP смогли подключиться через оба порта 22 и 2222. Что еще хуже, при подключении через порт 22 пользователи SFTP вообще не привязаны к корневому каталогу (они могут cdсвободно). Всего этого не ожидается.

Как мне достичь chrooted пользователей SFTP, ограниченных портом 2222, на основе OpenSSH, позволяя SSH функционировать нормально?

Спасибо.

answer

Попробуйте добавить другую группу совпадений и запретите доступ к группе.

Match Group sftpusers LocalPort 22
    DenyGroups sftpusers

Должно сработать.