So konfigurieren Sie SSH/SFTP und legen Berechtigungen unter dem Linux-Betriebssystem fest

So konfigurieren Sie SSH/SFTP und legen Berechtigungen unter dem Linux-Betriebssystem fest

Im Vergleich zu FTP bietet der SSH-basierte SFTP-Dienst eine bessere Sicherheit (Übertragung von Konten und Passwörtern im Nicht-Klartext) und eine bequemere Berechtigungsverwaltung (Einschränkung des aktiven Verzeichnisses des Benutzers).

1. Öffnen Sie ein SFTP-Konto, sodass Benutzer Dateien nur über SFTP bedienen können, aber nicht per SSH auf den Server zugreifen können.

2. Beschränken Sie das aktive Verzeichnis des Benutzers, sodass der Benutzer nur im angegebenen Verzeichnis aktiv sein kann, indem Sie die ChrootDirectory-Konfiguration von sftp verwenden

Bestimmen Sie die Version

#Stellen Sie sicher, dass die SSH-Version höher als 4.8p1 ist. Andernfalls ist sie nach dem Upgrade normalerweise höher als diese Version.
ssh -V

Neue Benutzer und Benutzergruppen erstellen

#Benutzergruppe sftp hinzufügen
Gruppenadd-SFTP
#Benutzer hinzufügen angegebenes Home-Verzeichnis angegebene Benutzergruppe erlaubt keine Shell-Anmeldung
useradd -d /home/sftp -m -g sftp -s /bin/false sftp
#Benutzerpasswort festlegen
passwd sftp

Active Directory

#Legen Sie das aktive Verzeichnis fest, das Sie einschränken möchten
mkdir -p /var/www/sftp
#Berechtigungen konfigurieren. Beachten Sie, dass der Verzeichnisbesitzer root sein muss, wenn dieses Verzeichnis für nachfolgende chroot Active Directorys verwendet wird! ! !
chown root.sftp /var/www/sftp

Grundlegende SSH-Konfiguration

# Konfigurationsdatei für den SSH-Dienst
vi /etc/ssh/sshd_config

#Grundlegende SSH-Remote-Login-Konfiguration
# Verifizierung aktivieren
PasswortAuthentifizierung ja
#Login mit leerem Passwort deaktivieren
PermitEmptyPasswords nein
# Remote-Login aktivieren
PermitRootLogin ja

Jetzt können Sie sich per SSH remote beim Server anmelden

SFTP konfigurieren

#Hier verwenden wir den integrierten internen SFTP-Dienst des Systems, um die Anforderungen zu erfüllen
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internes-sftp

Teilsystem

Subsystem bezieht sich auf das Untermodul von ssh. Das hier aktivierte ist das SFTP-Modul. Wir verwenden das im System integrierte interne SFTP, um diesen Dienst bereitzustellen. Tatsächlich können Sie sich nach der Konfiguration mit einem SSH-Konto oder mit dem FTP-Client SFTP anmelden.

Wenn Sie möchten, dass sich Benutzer per SFTP, aber nicht per SSH am Server anmelden können, und das Active Directory des Benutzers einschränken möchten, fahren Sie mit der folgenden Konfiguration fort

# Einschränkungen für angemeldete Benutzer
Übereinstimmungsgruppe sftp
ChrootDirectory /var/www/sftp # Sie können auch %h verwenden, um das Home-Verzeichnis des Benutzers darzustellen, und %u, um den Benutzernamen darzustellen.
ForceCommand internal-sftp # Erzwingt die Verwendung des integrierten internal-sftp-Dienstes des Systems, sodass sich Benutzer nur im FTP-Modus anmelden können
AllowTcpForwarding nein
X11Forwarding nein

Übereinstimmung mit [Benutzer|Gruppe] Benutzername|Gruppenname

Match [Benutzer|Gruppe] sftp Dies ist die Konfiguration der Berechtigungsgrenze für den angemeldeten Benutzer. Match wird auf den übereinstimmenden Benutzer oder die übereinstimmende Benutzergruppe angewendet und ist höher als die allgemeine Konfiguration von ssh.

ChrootDirectory Das aktive Verzeichnis des Benutzers kann mit %h gekennzeichnet werden. %u steht für den Benutzernamen. Wenn sich der mit Match übereinstimmende Benutzer anmeldet, wird das Stammverzeichnis der Sitzung auf dieses Verzeichnis umgestellt. Dabei sind zwei Punkte besonders zu beachten.

1. Alle Verzeichnisse im Chroot-Pfad müssen root gehören, mit einer maximalen Berechtigung von 0755. Dies muss beachtet und eingehalten werden. Wenn Sie sich also als Nicht-Root-Benutzer anmelden, müssen wir unter Chroot ein neues Verzeichnis erstellen, für das der angemeldete Benutzer die Berechtigung zum Ausführen hat.

2. Sobald chroot eingerichtet ist, wird das Stammverzeichnis "/" der entsprechenden Benutzersitzung beim Anmelden auf dieses Verzeichnis umgestellt. Wenn Sie zum Anmelden SSH anstelle des SFTP-Protokolls verwenden, werden Sie höchstwahrscheinlich aufgefordert:

/bin/bash: Keine solche Datei oder kein solches Verzeichnis

Diese Eingabeaufforderung ist sehr korrekt. Für den zu diesem Zeitpunkt angemeldeten Benutzer wurde das Stammverzeichnis "/" in der Sitzung auf das von Ihnen festgelegte Chroot-Verzeichnis umgestellt. Sofern Ihr Chroot nicht das "/"-Verzeichnis des Systems ist, wird zu diesem Zeitpunkt kein Bash-Befehl unter chroot/bin vorhanden sein. Dies ähnelt dem Parameter -s /bin/false, der beim Hinzufügen eines Benutzers festgelegt wird. Der anfängliche Befehl der Shell ist /bin/false, sodass die Remote-SSH-Anmeldung natürlich nicht verfügbar ist.

ForceCommand Der erste Befehl, der verwendet wird, wenn ein Benutzer gezwungen wird, sich bei einer Sitzung anzumelden. Wenn diese Option wie oben konfiguriert ist, kann sich der entsprechende Benutzer nur mit dem SFTP-Protokoll anmelden und nicht mit SSH.
Dieser Dienst erlaubt nur SFTP-Verbindungen.

Starten Sie den SSHD-Dienst nach Abschluss der Konfiguration neu

service sshd restart

Beachten:

1. Probleme, die durch chroot entstehen können. Da chroot das Stammverzeichnis der Sitzung auf dieses Verzeichnis umstellt, kann bei der SSH-Anmeldung die Fehlermeldung „/bin/bash: Keine solche Datei oder kein solches Verzeichnis“ angezeigt werden, da der Pfad dieser Sitzung chroot/bin/bash lautet.

2. ForceCommand ist der erste Befehl zu Beginn der Sitzung. Wenn Sie beispielsweise internal-sftp angeben, wird Ihnen angezeigt, dass dieser Dienst nur SFTP-Verbindungen zulässt. Dies entspricht dem Befehl usermod -s /bin/false. Wenn sich der Benutzer bei der Sitzung anmeldet, kann der Befehl /bin/bash nicht aufgerufen werden und die SSH-Anmeldung beim Server kann natürlich nicht durchgeführt werden.

Zusammenfassen

Oben ist die vom Herausgeber vorgestellte Methode zum Konfigurieren von SSH/SFTP und Festlegen von Berechtigungen unter dem Linux-Betriebssystem. Ich hoffe, sie ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!

Das könnte Sie auch interessieren:
  • Mit vsftp einen FTP-Server unter Linux aufbauen (mit Parameterbeschreibung)
  • LINUX Centos7 Build vsftpd-Dienst
  • Detaillierte Schritte zur Installation und Konfiguration von vsftpd unter Linux (empfohlen)
  • Einrichtungsprozess des VSFTP-Dienstes unter Linux
  • Zusammenfassung der Verwendung von Linux-SFTP-Befehlen

<<:  Lösung für das Problem, dass Emoji-Ausdrücke nicht in MySQL eingefügt werden können

>>:  Natives JS zur Implementierung des Spiels 2048

Artikel empfehlen

Spezifische Verwendung interner temporärer MySQL-Tabellen

Inhaltsverzeichnis UNION Tabelleninitialisierung ...

JavaScript-Implementierung des Verifizierungscode-Falls

In diesem Artikel wird der spezifische Code für J...

TimePicker im Element deaktiviert einen Teil der Zeit (deaktiviert auf Minuten)

Die Projektanforderungen lauten: Datum und Uhrzei...

Gründe und Lösungen für das Versagen des React-Ereignisdrosselungseffekts

Inhaltsverzeichnis Das Problem hierbei ist: Lösun...

Detaillierte Erklärung der HTML-Dokumenttypen

Meines ist: <!DOCTYPE html> Blog-Garten: &l...

js, um einen einfachen Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Beispielcode zur Implementierung eines 3D-Text-Hover-Effekts mit CSS3

In diesem Artikel wird der Beispielcode von CSS3 ...

Tutorial zur grundlegenden Verwendung des MySQL Slow Query Log

Parameter im Zusammenhang mit dem langsamen Abfra...