Я развертываю SFTP-сервер для команды, но некоторым из этих пользователей также требуется доступ по SSH для администрирования сервера.
PAM — это sssd с нашим AD. Поэтому я не могу создать отдельных локальных пользователей для использования их для SSH или создать отдельные учетные записи AD только для доступа по SSH.
На данный момент у меня это:
Match group server_ftp-only
ChrootDirectory /shared
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Если я удалю ForceCommand internal-sftp, это позволит пользователям использовать как SFTP, так и SSH, но я не хочу, чтобы все пользователи использовали SFTP, а только несколько пользователей.
Я попробовал добавить это:
Match group server_admins
AllowUsers *
Но это не работает. Похоже, что исходная группа Match переопределяет эту вторую группу Match.
Одним из возможных решений было бы удалить пользователей SSH из группы безопасности server_ftp-only и перевести их в группу server_admins, а затем создать группу соответствия server_admins без ForceCommand internal-sftp, но группа server_ftp-only заполнена командными группами (Team-A > server_ftp-only). Я действительно не могу создать дополнительные группы и отделить этих пользователей от их командных групп.
решение1
Ваша проблема отчасти заключается в том, что, насколько мне известно, не существует способа использовать условный Match
блок для отмены условия ForceCommand
, которое установлено как глобальное значение по умолчанию или установлено другим условным выражением Match.
Так что выне могу сделать:
# /etc/ssh/sshd_config
# global config ...
# Enable the internal SFTP server and restrict all users to only SFTP
Subsystem sftp internal-sftp
ForceCommand internal-sftp
ChrootDirectory /shared
# ...
# Override and remove the ForceCommand sftp-only restriction
# for users in the server_admins group
Match group server_admins
ChrootDirectory none <=== this does exist
ForceCommand none <=== this does NOT exist
Эту проблему можно решить, применив другую стратегию: не устанавливать значения ForceCommand
по умолчанию, оставить значения по умолчанию более мягкими, а затем создать немного более сложнуюMatch
блок сотрицательный шаблончтобы это относилось ко всем ( *
),кромечленыserver_admins
и там вы переопределяете значения по умолчанию и добавляете ограничения:
# /etc/ssh/sshd_config
# ...
# your current global config
#
# Enable the internal sftp server but do not set the ForceCommand
Subsystem sftp internal-sftp
# ...
# Everybody except members of the server_admins group are restricted to SFTP
Match group !server_admins,*
ForceCommand internal-sftp
ChrootDirectory /shared
X11Forwarding no
AllowTcpForwarding no
И похоже, чтобы соответствовать членамserver_ftp-only
которые также не являются членамиserver_admins
Match group !server_admins,server_ftp-only
ForceCommand internal-sftp
...