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): ```bash sudo apt update && sudo apt install openssh-server -y # Ubuntu/Debian sudo systemctl enable ssh sudo systemctl start ssh ``` Auf Fedora/RHEL/Arch: ```bash sudo dnf install openssh-server -y # Fedora sudo pacman -S openssh # Arch sudo systemctl enable sshd sudo systemctl start sshd ``` Status prüfen: ```bash systemctl status ssh ``` oder ```bash systemctl status sshd ``` --- ### 2. IP-Adresse des Zielrechners herausfinden Auf dem Zielrechner: ```bash ip a ``` oder ```bash hostname -I ``` Beispielausgabe: `192.168.178.42` --- ### 3. Verbindung vom Quellrechner herstellen Auf dem Rechner, von dem du zugreifen willst: ```bash ssh benutzername@192.168.178.42 ``` Dabei: - `benutzername` = Benutzerkonto auf dem Zielrechner - `192.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: ```bash 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: ```bash ssh-copy-id benutzername@192.168.178.42 ``` Danach kannst du dich einloggen ohne Passwort: ```bash 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: ```bash ssh -L :: @ ``` Beispiel für PostgreSQL: ```bash 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: ```text 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 ``` `` 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: ```text 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.