sag, mein ~/.ssh/config
hat eine Zeile:
Host machine1
User user
HostName machine1
ProxyCommand ssh server nc %h %p 2> /dev/null
und das funktioniert richtig, aber das Problem ist, dass ich viele habe machines
: machine1, machine2, machine3, ...
Wie kann ich alle einstellen, ohne die gleiche Art von Zeilen manuell zu kopieren?
command-line
ssh
K.Wanter
quelle
quelle
Host machine*
würde auch funktionieren, für allgemeine Konfiguration, bei der ein Teil des Namens übereinstimmt.Antworten:
Sie können dies folgendermaßen tun:
Sie müssen nur die Hosts in der
Host
Zeile durch Leerzeichen getrennt auflisten und können sie weglassen,HostName
wenn sie sich nicht von dem Namen unterscheiden, den Sie in derHost
Zeile angegeben haben. Siehe Mehrere ähnliche Einträge in ssh Config · U & L .Zur Vereinfachung der es noch mehr gibt die Platzhalter sind
*
und?
erhältlich mit ihrer üblichen Bedeutung, soHost machine?
wäre eben möglich , dass Ihr Beispiel.quelle
?
oder einen*
Platzhalter, wiemachine?
imPATTERNS
Abschnitt vonman ssh_config
machine*
funktioniert nicht, es sollte einen brillanten Weg wie diesen geben, ich weiß nicht, wie ich es machen sollHostName %h
ist redundant, Sie benötigen es nicht, wenn Sie den Hostnamen nicht ändern möchten.deep??
oderdeep*
stattdessen verwenden. (Oderdeep1? deep2? deep3?
um genau zu sein.)HostName %h
ist nutzlos. Überspringen Sie einfach dieHostName
Zeile.Wenn Ihre Hostnamen zu einem Muster passen, können Sie die Muster von SSH verwenden:
Sie können Muster in verwenden
~/.ssh/config
. Vonman ssh_config
:Also, wenn Sie wollen Proxy alles in
*.example.com
, dann in Ihrem~/.ssh/config
setzen:Mit
ssh
den eigenen Optionen können Sie netcat auch vermeiden:Von
man ssh
:quelle
Ja, der Hostname ist redundant.
quelle