Files
it-know-how/Linux/SSH Verbindung in Linux.md
T
2026-09-28 17:37:46 +02:00

157 lines
3.3 KiB
Markdown

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 <lokaler-port>:<zielhost>:<zielport> <benutzer>@<ssh-server>
```
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
```
`<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:
```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.