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

CSS3-Filtercode zum Erreichen des Grau- oder Schwarzmodus auf Webseiten

Frontend css3.filter kann nicht nur den Graueffek...

MySQL-Abfragebaumstrukturmethode

Inhaltsverzeichnis MySQL-Abfragebaumstruktur 1. Ü...

Eine kurze Analyse von Event Bubbling und Event Capture in js

Inhaltsverzeichnis 01-Ereignisse brodeln 1.1- Ein...

Ein zeitaufwändiger Fehlerbehebungsprozess für einen Docker-Fehler

Inhaltsverzeichnis Herkunft Umweltinformationen F...

JS realisiert Spezialeffekte der Webseiten-Navigationsleiste

In diesem Artikel erfahren Sie mehr über einen pr...

So installieren Sie MySQL 5.7.29 mit einem Klick mithilfe eines Shell-Skripts

Dieser Artikel bezieht sich auf die Arbeit des 51...

Installationsprozess des 64-Bit-Quellcodes von CentOs7 MySQL 5.6.40

1. Installieren Sie zuerst die Abhängigkeitspaket...

VUE führt die Implementierung der Verwendung von G2-Diagrammen ein

Inhaltsverzeichnis Über G2 Chart verwenden Vollst...

Detaillierte Analyse der HTML-Semantik und der zugehörigen Front-End-Frameworks

Über Semantik Die Semantik ist die Lehre von der ...