SSH

Sicherer Remote-Server-Zugriff - verschlusselte Verbindungen, schlusselbasierte Authentifizierung, Tunneling

TL;DR

Was: Secure Shell - verschlüsseltes Protokoll für Remote-Server-Zugriff und Dateitransfer.

Warum: Sichere Verbindung zu Remote-Servern, Dateiübertragung und Tunnel-Verbindungen.

Quick Start

Verbindung zu einem Server:

ssh user@hostname
ssh [email protected]
ssh -p 2222 user@hostname    # Custom port

SSH-Schlüssel generieren (empfohlen):

ssh-keygen -t ed25519 -C "[email protected]"
# Or RSA (wider compatibility)
ssh-keygen -t rsa -b 4096 -C "[email protected]"

Schlüssel auf Server kopieren (passwortlose Anmeldung):

ssh-copy-id user@hostname
# Or manually
cat ~/.ssh/id_ed25519.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

SSH-Konfiguration für Shortcuts:

# ~/.ssh/config
Host myserver
    HostName 192.168.1.100
    User admin
    Port 22
    IdentityFile ~/.ssh/id_ed25519

# Now just use: ssh myserver

Cheatsheet

BefehlBeschreibung
ssh user@hostVerbindung zum Server
ssh -i key.pem user@hostBestimmten Schlüssel verwenden
scp file user@host:/pathDatei zum Server kopieren
scp user@host:/path fileDatei vom Server kopieren
scp -r dir user@host:/pathVerzeichnis kopieren
ssh -L 8080:localhost:80 user@hostLokale Portweiterleitung
ssh -R 8080:localhost:80 user@hostRemote-Portweiterleitung
ssh -D 1080 user@hostSOCKS-Proxy
ssh-add ~/.ssh/keySchlüssel zum Agent hinzufügen

Gotchas

Permission denied (publickey)

# Check key permissions
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

# Check server authorized_keys
chmod 600 ~/.ssh/authorized_keys

Connection refused

# Check if SSH service is running
sudo systemctl status sshd

# Start SSH service
sudo systemctl start sshd

# Check firewall
sudo ufw allow 22

Host key verification failed

# Remove old key (after verifying it's safe)
ssh-keygen -R hostname

# Or skip check (not recommended for production)
ssh -o StrictHostKeyChecking=no user@host

Keep connection alive

# ~/.ssh/config
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

Next Steps