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-serverBefehl (CentOS/RHEL):
sudo yum install openssh-serverBefehl (Debian/Ubuntu):
sudo systemctl start ssh
sudo systemctl enable sshBefehl (CentOS/RHEL):
sudo systemctl start sshd
sudo systemctl enable sshdBefehl:
sudo systemctl status sshAusgabe:
● 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 sshSSH-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_hostErklä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_hostErklärung: Dieser Befehl leitet den lokalen Port 8080 zum Port 80 des entfernten Hosts weiter.
Befehl:
ssh -R 8080:localhost:80 user@remote_hostErklärung: Dieser Befehl leitet den Port 8080 des entfernten Hosts zum Port 80 des lokalen Hosts weiter.
Befehl:
ssh -D 8080 user@remote_hostErklä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_hostErklä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_rsaErklä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 -lAusgabe:
4096 SHA256:abcd... (RSA)
Erklärung: Dieser Befehl listet alle momentan vom
ssh-agent verwalteten Schlüssel auf.
Befehl:
ssh-add -d ~/.ssh/id_rsaErklärung: Dieser Befehl entfernt den spezifischen
privaten Schlüssel id_rsa aus dem
ssh-agent.
Befehl:
ssh-add -DErklä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.