Ich stelle einen SFTP-Server für ein Team bereit, aber einige dieser Benutzer benötigen auch SSH-Zugriff, um den Server zu verwalten.
PAM ist SSD mit unserem AD. Ich kann also keine separaten lokalen Benutzer für sie erstellen, die sie für SSH verwenden können, oder separate AD-Konten nur für den SSH-Zugriff erstellen.
Momentan habe ich Folgendes:
Match group server_ftp-only
ChrootDirectory /shared
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Wenn ich ForceCommand internal-sftp entferne, können Benutzer sowohl SFTP als auch SSH verwenden, aber ich möchte nicht, dass alle Benutzer SFTP verwenden, sondern nur einige wenige.
Ich habe versucht, Folgendes hinzuzufügen:
Match group server_admins
AllowUsers *
Aber es funktioniert nicht. Es scheint, dass die ursprüngliche Match-Gruppe diese zweite Match-Gruppe überschreibt.
Eine mögliche Lösung wäre, die SSH-Benutzer aus der Sicherheitsgruppe „server_ftp-only“ in die Gruppe „server_admins“ zu verschieben und dann eine Match-Gruppe „server_admins“ ohne ForceCommand internal-sftp zu erstellen, aber die Gruppe „server_ftp-only“ wird von Teamgruppen (Team-A > server_ftp-only) bevölkert. Ich kann wirklich keine zusätzlichen Gruppen erstellen und diese Benutzer von ihren Teamgruppen trennen.
Antwort1
Ihr Problem besteht teilweise darin, dass es meines Wissens keine Möglichkeit gibt, mit einem bedingten Match
Block das „ ForceCommand
Wenn“ aufzuheben, was als globaler Standard festgelegt oder durch eine andere Match-Bedingung festgelegt wurde.
Also dukann nicht:
# /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
Sie lösen dieses Problem, indem Sie eine andere Strategie implementieren: Legen Sie die Standardeinstellungen nicht ForceCommand
als Standard fest, lassen Sie sie etwas lockerer und erstellen Sie dann eine etwas kompliziertereMatch
Block mit einemnegiertes Musterdamit es für alle gilt ( *
),außerdie Mitglieder vonserver_admins
und dort überschreiben Sie die Standardeinstellungen und fügen Einschränkungen hinzu:
# /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
Und ähnlich passend die Mitglieder vonserver_ftp-only
die nicht auch Mitglied vonserver_admins
Match group !server_admins,server_ftp-only
ForceCommand internal-sftp
...