zur Übersicht: Linux: meine Software und Konfigurationstipps
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
.