SSH und SFTP: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „= SSH mit getrennten Zugängen: Port 22 (SSH) und Port 8472 (SFTP-only) = Diese Anleitung richtet auf '''it2XX''' zwei getrennte SSH-Zugänge auf demselben Ho…“) |
|||
| Zeile 60: | Zeile 60: | ||
<code>sshd -t</code> prüft die Syntax, bevor der Dienst tatsächlich neu geladen wird – bei einem Fehler in der Config sonst riskant, da das laufende System sich sofort selbst aussperren kann. | <code>sshd -t</code> prüft die Syntax, bevor der Dienst tatsächlich neu geladen wird – bei einem Fehler in der Config sonst riskant, da das laufende System sich sofort selbst aussperren kann. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
== Funktionstest == | == Funktionstest == | ||
Aktuelle Version vom 30. Juli 2026, 07:45 Uhr
SSH mit getrennten Zugängen: Port 22 (SSH) und Port 8472 (SFTP-only)
Diese Anleitung richtet auf it2XX zwei getrennte SSH-Zugänge auf demselben Host ein:
- Port 22 – regulärer SSH-Login für andere Benutzer des Systems
- Port 8472 – ausschließlich SFTP, kein Login möglich, gebunden an die Gruppe
sftp-only
Benutzer martha und leroy werden der Gruppe sftp-only zugeordnet und nutzen ausschließlich Port 8472. Auf Port 22 haben sie keinen Zugriff.
Gruppe und Benutzer anlegen
- Gruppe für SFTP-only-Zugänge erstellen
groupadd sftp-only
- Benutzer martha und leroy anlegen und der Gruppe zuweisen
useradd -m -g sftp-only -s /usr/sbin/nologin martha
useradd -m -g sftp-only -s /usr/sbin/nologin leroy
passwd martha
passwd leroy
Die Login-Shell /usr/sbin/nologin ist ein zusätzlicher Schutzwall: Selbst wenn martha oder leroy versuchen sollten, sich über Port 22 einzuloggen, scheitert das bereits daran. Der eigentliche Mechanismus, der SFTP-only auf Port 8472 erzwingt, ist aber ForceCommand in der sshd-Konfiguration.
Verzeichnisstruktur für Chroot
Für ChrootDirectory muss das Home-Verzeichnis root:root gehören und darf nicht gruppen-/world-writable sein. Ein beschreibbares Unterverzeichnis wird für die eigentlichen Dateien angelegt.
- Chroot-Basis vorbereiten
chown root:root /home/martha /home/leroy
chmod 755 /home/martha /home/leroy
- Beschreibbares Upload-Verzeichnis anlegen
mkdir -p /home/martha/upload /home/leroy/upload
chown martha:sftp-only /home/martha/upload
chown leroy:sftp-only /home/leroy/upload
sshd_config anpassen
- Port 22 = normaler SSH-Login für andere User, Port 8472 = ausschließlich SFTP für martha/leroy, niemals Login
# /etc/ssh/sshd_config
Port 22
Port 8472
Match LocalPort 8472
ForceCommand internal-sftp
PermitTTY no
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no
ChrootDirectory %h
martha und leroy verbinden sich ausschließlich über Port 8472. Dort bekommt jeder Client ausnahmslos internal-sftp vorgesetzt — PermitTTY no verhindert zusätzlich jede Terminal-Zuweisung. Ein Login ist auf Port 8472 technisch nicht möglich, egal welcher Befehl übergeben wird. Auf Port 22 haben martha und leroy keinen Zugriff — dieser Port ist ausschließlich für andere Benutzer des Systems bestimmt.
- sshd neu laden
sshd -t
systemctl reload sshd
sshd -t prüft die Syntax, bevor der Dienst tatsächlich neu geladen wird – bei einem Fehler in der Config sonst riskant, da das laufende System sich sofort selbst aussperren kann.
Funktionstest
- Von einem Client aus prüfen, dass Port 8472 keinen Login zulässt
ssh -p 8472 martha@it2XXsftp -P 8472 martha@it2XX
Der erste Befehl muss fehlschlagen bzw. sofort trennen, der zweite muss funktionieren. Selbst ein expliziter Befehl wie ssh -p 8472 martha@it2XX whoami darf keine Ausgabe liefern, da ForceCommand jeden übergebenen Befehl ignoriert und stattdessen ausnahmslos internal-sftp startet.
- Zur Kontrolle
- martha darf sich auch auf Port 22 nicht einloggen können
ssh -p 22 martha@it2XX
Zusammenfassung
| Port | Zweck | Login für martha/leroy? |
|---|---|---|
| 22 | Regulärer SSH-Zugang (andere User) | Nein |
| 8472 | SFTP-only | Nein — ausschließlich Dateiübertragung |