157 lines
3.3 KiB
Markdown
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.
|