Warum die „ssh_config (5)“ do manpages empfehlen , dass die ControlPath
Option zumindest die enthalten soll %h
, %p
und %r
Platzhalter , um eindeutig zu identifizieren jede gemeinsam genutzte Verbindung?
Ich dachte, dass mehrere Sitzungen den gleichen Socket mit einer Verbindung zum gleichen Host teilen sollten . Wäre es nicht sinnvoll, eine einfache Definition zu haben wie:
ControlPath ~/.cache/ssh/mux/%h
Anstelle von etwas wie:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
Nach meinem Verständnis wird mit der ersten Definition eine Verbindung zwischen mehreren Sitzungen mit verschiedenen Remotebenutzern zu demselben Remotehost an verschiedenen Remoteports geteilt.
Ich möchte die erste Definition im Host-Standardabschnitt haben, damit es genügt zu sagen ssh -o ControlMaster=no
.
Ich möchte die Verbindung zu demselben Remote-Host für alle Sitzungen freigeben, die von demselben lokalen Benutzer initiiert wurden, unabhängig vom Remote-Benutzer und Remote-Port. Der Socket des Master-Clients sollte sich unter dem Basisverzeichnis des lokalen Benutzers befinden.
quelle
Antworten:
Sie können. Beachten Sie jedoch, dass Sie
ControlPath
als der ursprüngliche Benutzer der Verbindung angemeldet sind, wenn Sie eine Verbindung mit einem Host über herstellen , und zwar unabhängig davon, unter welchem Benutzer Sie sich anmelden möchten. ZB ohne bestehende Verbindung zu "irgendwo":Diese Sitzung findet irgendwo statt.
Diese Sitzung wird auch irgendwo bob @ sein, da Sie denselben ControlPath und dieselbe Einstellung verwendet haben
ControlMaster=no
. WennControlMaster=yes
, würden Sie als Sue angemeldet sein, aber ssh wird Ihr ControlPath-Argument ignoriert haben, wie impliziert inman ssh_config
:Dies ist ein Beweis dafür, dass
ControlMaster=yes
in beiden Fällen der ControlPath-Socket beim Beenden von bob~/.ssh/somewhere
verschwindet, obwohl die "Sue" -Sitzung noch ausgeführt wird, was bedeutet, dass die Sue-Sitzung diesen Socket nie verwendet hat .Wenn Sie also dieselbe Verbindung verwenden möchten,
%h
ist dies in Ordnung. Beachten Sie jedoch, dass Sie eine Verbindung nicht als mehrere verschiedene Remotebenutzer freigeben können - ssh lässt Sie nicht zu.quelle
Sie könnten sogar für denselben Server mehrere Benutzer und mehrere Ports verwenden. Ich selbst verbinde mich mit Hunderten von Systemen im Intranet des Unternehmens, die meisten haben mehrere Benutzer mit unterschiedlichen Funktionen oder App-Servern. Der Zugriff auf BenutzerA unterscheidet sich erheblich vom Zugriff auf BenutzerB, und die Master-Verbindung muss unterschiedlich sein. Um es kurz zu machen:
Wie Sie sehen, erhalten wir keine OpenSSH-Sitzung mit userB, sondern das Original mit userA. Das bedeutet, dass das Basisverzeichnis, die Berechtigungen und sogar die Authentifizierung selbst nicht den Erwartungen entsprechen. Wenn Sie versuchen, eine Datei im Verzeichnis von Benutzer B zu löschen, könnte dies a) die falsche Datei und b) die falschen Berechtigungen sein.
Wenn Sie niemals eine Verbindung zu mehr als einem Benutzer auf einem Server über einen einzelnen Port herstellen, ist die Verwendung von
%h
möglicherweise ausreichend. In Ihrer~/.ssh/config
Datei möchten Sie Folgendes verwenden:Mit der
ControlPersist
Option bleibt die Masterverbindung im Hintergrund geöffnet, bis sie beendet oder mit beendet wirdssh -O exit
. Dies ist eine nette Funktion zum Festlegen und Vergessen.Aber wenn es irgendeine Möglichkeit , auf einem Host , um mehr als einen Benutzer zu verbinden, dann würden Sie etwas sicherer:
quelle