SSH (Secure Shell) ist ein Protokoll, das sicheren Fernzugriff auf Netzwerkdienste ermöglicht. Es verschlüsselt den gesamten Datenverkehr, um Abhörangriffe und Man-in-the-Middle-Angriffe zu verhindern.
Auf den meisten Linux-Distributionen ist der OpenSSH-Server standardmäßig verfügbar. Falls er nicht installiert ist, kann er mit den folgenden Befehlen installiert werden.
Befehl (Debian/Ubuntu):
sudo apt-get install openssh-server
Befehl (CentOS/RHEL):
sudo yum install openssh-server
Befehl (Debian/Ubuntu):
sudo systemctl start ssh
sudo systemctl enable ssh
Befehl (CentOS/RHEL):
sudo systemctl start sshd
sudo systemctl enable sshd
Befehl:
sudo systemctl status ssh
Ausgabe:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-07-05 10:05:17 CEST; 1h 2min ago
Die Hauptkonfigurationsdatei für den SSH-Server ist
/etc/ssh/sshd_config
. Hier können verschiedene
Einstellungen vorgenommen werden, um die Sicherheit und Funktionalität
des SSH-Dienstes anzupassen.
Konfigurationszeile:
Port 2222
Erklärung: Ändert den Standardport von 22 auf 2222, um einfache Angriffsversuche zu erschweren.
Konfigurationszeile:
PermitRootLogin no
Erklärung: Verhindert den direkten Root-Login über SSH, um die Systemsicherheit zu erhöhen.
Konfigurationszeile:
PasswordAuthentication no
Erklärung: Deaktiviert die Passwort-Authentifizierung und erzwingt die Verwendung von SSH-Schlüsseln.
Nach Änderungen an der Konfigurationsdatei muss der SSH-Dienst neu gestartet oder die Konfiguration neu geladen werden.
Befehl:
sudo systemctl reload ssh
SSH-Schlüssel bieten eine sicherere und bequemere Methode zur Authentifizierung im Vergleich zu Passwörtern.
Befehl:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Erklärung: Dieser Befehl generiert ein neues RSA-Schlüsselpaar mit einer Schlüssellänge von 4096 Bit.
Befehl:
ssh-copy-id user@remote_host
Erklärung: Dieser Befehl kopiert den öffentlichen
Schlüssel in die ~/.ssh/authorized_keys
-Datei des
entfernten Hosts.
Befehl:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Erklärung: Dieser Befehl fügt den öffentlichen
Schlüssel manuell zur authorized_keys
-Datei des entfernten
Hosts hinzu.
SSH-Tunneling ermöglicht die sichere Weiterleitung von Netzwerkverkehr über eine verschlüsselte SSH-Verbindung.
Befehl:
ssh -L 8080:remote_host:80 user@remote_host
Erklärung: Dieser Befehl leitet den lokalen Port 8080 zum Port 80 des entfernten Hosts weiter.
Befehl:
ssh -R 8080:localhost:80 user@remote_host
Erklärung: Dieser Befehl leitet den Port 8080 des entfernten Hosts zum Port 80 des lokalen Hosts weiter.
Befehl:
ssh -D 8080 user@remote_host
Erklärung: Dieser Befehl erstellt einen SOCKS-Proxy auf dem lokalen Port 8080, der den gesamten Datenverkehr über die SSH-Verbindung leitet.
ProxyJump
ermöglicht den Zugriff auf einen Zielhost über
einen Zwischen-SSH-Host (Jump Host).
Befehl:
ssh -J user@jump_host user@target_host
Erklärung: Dieser Befehl stellt eine Verbindung zum
target_host
über den jump_host
her.
ssh-agent
ist ein Hilfsprogramm, das SSH-Schlüssel im
Speicher hält und deren Passphrases verwaltet, um die Notwendigkeit zu
eliminieren, die Passphrase bei jeder Verbindung einzugeben.
Befehl:
eval "$(ssh-agent -s)"
Ausgabe:
Agent pid 1234
Erklärung: Dieser Befehl startet den
ssh-agent
und setzt die Umgebungsvariablen, die für die
Kommunikation mit dem Agenten erforderlich sind.
Befehl:
ssh-add ~/.ssh/id_rsa
Erklärung: Dieser Befehl fügt den privaten Schlüssel
id_rsa
zum ssh-agent
hinzu und ermöglicht die
Verwendung des Schlüssels ohne erneute Passphrase-Eingabe.
Befehl:
ssh-add -l
Ausgabe:
4096 SHA256:abcd... (RSA)
Erklärung: Dieser Befehl listet alle momentan vom
ssh-agent
verwalteten Schlüssel auf.
Befehl:
ssh-add -d ~/.ssh/id_rsa
Erklärung: Dieser Befehl entfernt den spezifischen
privaten Schlüssel id_rsa
aus dem
ssh-agent
.
Befehl:
ssh-add -D
Erklärung: Dieser Befehl entfernt alle derzeit vom
ssh-agent
verwalteten Schlüssel.
Durch die Verwendung von ssh-agent
wird die Verwaltung
von SSH-Schlüsseln erleichtert und die Sicherheit erhöht, indem die
Passphrases sicher im Speicher gehalten werden.
SSH ist ein vielseitiges und sicheres Werkzeug für den Fernzugriff und die Verwaltung von Netzwerkdiensten unter Linux. Durch die Konfiguration von SSH, einschließlich der Verwendung von Schlüsseln und Tunneling, kann die Sicherheit und Flexibilität des Zugriffs auf entfernte Systeme erheblich verbessert werden.