zur Übersicht: Linux: meine Software und Konfigurationstipps

SSH-Konfiguration

SSH ist eine tolle Sache, hat aber auch Schattenseiten. Das größte praktische Ärgernis sind die Verbindungsabbrüche bei Verbindungen übers Internet. Deren Folgen lassen sich zwar durch die Verwendung von screen minimieren, aber ärgerlich sind sie dennoch. Glücklicherweise kann man sie durch Konfigurationsänderungen vermeiden (mal abgesehen von echten Zusammenbrüchen der Internetverbindung). In der Theorie sollte es nicht so sein, aber mein Praxistest sagt, dass diese Änderungen nicht ausreichen, wenn man sie nur am Client vornimmt (nur Server habe ich nicht getestet). So sehen meine Konfigurationsdateien aus:

Client (.ssh/config):

CheckHostIP no
NoHostAuthenticationForLocalhost yes

Compression yes

PasswordAuthentication no
Protocol 2

ServerAliveCountMax 18
ServerAliveInterval 10
TCPKeepAlive yes

Die Bedeutungen sind nachzulesen in man ssh_config. Der erste Block dient der Vermeidung von Ärgernissen; der zweite der Beschleunigung, wenn gestartete Programme mal umfangreiche Ausgaben erzeugen; der dritte der Sicherheit (damit ich nicht mal versehentlich ein Passwort eingebe); der vierte Block verhindert (zusammen mit seinem Server-Pendant) das Abbrechen der Verbindung. Bei Verbindungen zu einem Server, auf dem noch kein Schlüssel von mir hinterlegt ist, muss diese Option dann allerdings deaktiviert werden:

ssh -o PasswordAuthentication=yes user@host

Server (/etc/ssh/sshd_config):

# [...]
PermitRootLogin without-password
PasswordAuthentication no
UsePAM no

TCPKeepAlive yes
ClientAliveInterval 10
ClientAliveCountMax 18
#[...]

Der erste Block verhindert Logins ohne Schlüssel (für root bzw. für alle; PAM könnte diese Vorgabe aushebeln, deshalb deaktiviert); der zweite ist das Äquivalent zum vierten Client-Block. Siehe man sshd_config.