3.3 KiB
Um dich per SSH zwischen zwei Linux-Rechnern im Heimnetzwerk zu verbinden, gehst du so vor:
1. SSH-Server installieren und aktivieren
Auf dem Rechner, zu dem du dich verbinden möchtest (Zielrechner):
sudo apt update && sudo apt install openssh-server -y # Ubuntu/Debian
sudo systemctl enable ssh
sudo systemctl start ssh
Auf Fedora/RHEL/Arch:
sudo dnf install openssh-server -y # Fedora
sudo pacman -S openssh # Arch
sudo systemctl enable sshd
sudo systemctl start sshd
Status prüfen:
systemctl status ssh
oder
systemctl status sshd
2. IP-Adresse des Zielrechners herausfinden
Auf dem Zielrechner:
ip a
oder
hostname -I
Beispielausgabe: 192.168.178.42
3. Verbindung vom Quellrechner herstellen
Auf dem Rechner, von dem du zugreifen willst:
ssh benutzername@192.168.178.42
Dabei:
benutzername= Benutzerkonto auf dem Zielrechner192.168.178.42= IP-Adresse des Zielrechners im Heimnetz
Beim ersten Mal wirst du gefragt, ob du den Host-Fingerprint akzeptieren willst → yes. Danach gibst du dein Passwort ein.
4. (Optional) Passwortlose Anmeldung mit SSH-Key
Falls du dich ohne Passwort anmelden willst:
Auf dem Quellrechner:
ssh-keygen -t ed25519
(oder rsa falls gewünscht, einfach Enter drücken, um Standardpfad ~/.ssh/id_ed25519 zu nutzen)
Dann den öffentlichen Schlüssel auf den Zielrechner kopieren:
ssh-copy-id benutzername@192.168.178.42
Danach kannst du dich einloggen ohne Passwort:
ssh benutzername@192.168.178.42
👉 Soll ich dir ein kurzes Beispiel-Setup mit zwei Testbenutzern schreiben, das du direkt im Heimnetz nachmachen kannst?
5. SSH-Tunnel für lokale Datenbankzugriffe
Mit einem lokalen SSH-Tunnel (-L) wird ein Port auf dem eigenen Rechner an
einen Zielhost und Zielport weitergeleitet, die aus Sicht des SSH-Servers
erreichbar sind:
ssh -L <lokaler-port>:<zielhost>:<zielport> <benutzer>@<ssh-server>
Beispiel für PostgreSQL:
ssh -L 15432:127.0.0.1:5432 benutzername@vm.example.org
Danach kann ein lokaler Client über 127.0.0.1:15432 auf PostgreSQL zugreifen.
Die Verbindung verläuft dabei so:
Datenbank-Client auf dem eigenen Rechner
|
| 127.0.0.1:15432
v
SSH-Tunnel zur VM
|
| 127.0.0.1:5432 aus Sicht der VM
v
PostgreSQL auf der VM
<zielhost> wird aus Sicht der VM aufgelöst. Wenn PostgreSQL in einem
Docker-Container läuft, kann das je nach Setup beispielsweise 127.0.0.1,
ein Docker-Service-Name oder eine Container-IP sein. Eine Container-IP wie
172.19.0.2 sollte nicht dauerhaft vorausgesetzt werden, weil sie sich nach
dem Neuerstellen des Containers ändern kann. Siehe auch
DBeaver PostgreSQL via SSH-Tunnel und Docker.
Adressen nicht verwechseln
hostname -I gibt alle Adressen des Rechners aus. Darunter können sich auch
Docker-Bridge-Adressen befinden. Die Ausgabe zeigt nicht, welche Adresse für
einen bestimmten Dienst die richtige ist:
10.2.0.4 Adresse der VM im Azure-Netzwerk
172.19.0.1 Docker-Bridge-Gateway
172.19.0.2 möglicherweise eine Container-IP
Die tatsächlich passende Adresse und der passende Port sollten mit ss,
docker inspect, nc oder psql geprüft werden.