Ungeduldige Naturen können von der Secure Shell durchaus einmal genervt sein, denn das Login auf einem entfernten Rechner kann, je nach CPU und Netzwerk, leicht ein paar Sekunden dauern. Abhilfe schafft das Multiplexing-Feature von SSH, das es ermöglicht, eine SSH-Verbindung mehrfach zu verwenden. Damit fällt der Overhead durch TCP-Verbindungsaufnahme und Key-Austausch weg und das zweite Einloggen geht deutlich schneller vonstatten.
Um Multiplexing pauschal für alle Verbindungen zu aktivieren, tragen Sie die folgenden Zeilen in der Konfigurationsdatei "$HOME/.ssh/config" ein:
Host * ControlMaster auto ControlPath ~/.ssh/s/m-%r@%h:%p
Die für das Multiplexing verwendeten Sockets werden somit im Verzeichnis "~/.ssh/s/" erzeugt, das Sie erst mit passenden Rechten vergeben müssen:
mkdir ~/.ssh/s chmod go-rwx ~/.ssh/s/
Wenn Sie sich nun auf einem anderen Rechner einloggen, zeigt ein Blick in das Verzeichnis einen neuen Socket an:
$ ls -l .ssh/s total 0 srw------- 1 oliver oliver 0 Dez 5 14:07 m-oliver@supersecret.org:22
Weitere SSH-Sessions nutzen diesen Socket, solange die erste Verbindung geöffnet ist. Die folgenden beiden Aufrufe demonstrieren den Gewinn. Im ersten Beispiel wird eine neue Verbindung gestartet, das zweite macht per Multiplexing von dem offenen Kanal Gebrauch:
$ time ssh one.supersecret.org date Mon Dec 5 14:08:11 CET 2016 real 0m6.017s user 0m0.028s sys 0m0.000s
$ time ssh one.supersecret.org date Mon Dec 5 14:10:21 CET 2016 real 0m0.104s user 0m0.004s sys 0m0.008s
Eine weitere für das Multiplexing interessante Option ist "ControlPersist", das die maximale Dauer der Master-Verbindung angibt.
Auch Ansible , das sich für das zentrale Konfigurationsmanagement von Servern nutzen lässt und dazu auf SSH zurückgreift, lässt sich mit dieser Methode beschleunigen. Dazu dient diese Zeile in der Ansible-Konfiguration:
ssh_args = -o ControlMaster=auto -o ControlPersist=60s