Dies ist nicht wirklich mit Ansible verwandt. Auf dem Steuerpfad speichert SSH seine Sockets für Multiplexsitzungen.
http://man.openbsd.org/ssh_config.5
ControlPath
den Pfad zu der Buchse für Verbindungsfreigabe verwendet Steuerung angeben, wie oben in dem Abschnitt beschrieben Control oder die Zeichenfolge „none“ Verbindungsfreigabe zu deaktivieren. Im Pfad wird '% L' durch die erste Komponente des lokalen Hostnamens ersetzt, '% l' wird durch den lokalen Hostnamen (einschließlich eines beliebigen Domänennamens) ersetzt, '% h' wird durch das Ziel ersetzt Hostname, '% n' wird durch den ursprünglichen Zielhostnamen ersetzt, der in der Befehlszeile angegeben ist, '% p' der Zielport, '% r' durch den Benutzernamen für die Remoteanmeldung, '% u' für den Benutzernamen und '% i 'durch die numerische Benutzerkennung (uid) des Benutzers, der ssh (1) ausführt, und'% C 'durch einen Hash der Verkettung:% l% h% p% r. Es wird empfohlen, dass jeder ControlPath, der für die opportunistische Verbindungsfreigabe verwendet wird, mindestens% h,% p und% r (oder alternativ% C) enthält und in einem Verzeichnis abgelegt wird, das für andere Benutzer nicht schreibbar ist. Dies stellt sicher, dass gemeinsame Verbindungen eindeutig identifiziert werden.
So, es gibt keinen Platzhalter für die Hosts IP. Den Weg immer kürzer zu machen, ist ein Kompromiss. ~/%%h‐%%r
ist bereits die kürzeste mögliche Lösung, die nicht unsicher ist. Wenn Sie garantieren können, dass Sie niemals einen anderen Remote-Benutzer für die Verbindung zum Host verwenden, können Sie möglicherweise %r
löschen und nur %h
verwenden.
Wenn das Problem ist, dass Ihr Hostname zu lang ist, ist vielleicht die Erstellung eines Alias in Ihrer .ssh/config eine Lösung?
host short-name
hostname very-long-name-that-makes-control-path-location-exceed-the-possible-length-limitation
%n
dann sollte short-name
beziehen, die anstelle von %h
verwendet werden kann.
danke @udondan das war v hilfreich! –