
Ich möchte auf einige sehr ähnliche Maschinen zugreifen, die sich in einem privaten Netzwerk befinden: A
, B
, C
. Ich habe einen JumpHost konfiguriert J1
und die Konfiguration für die folgenden Maschinen so eingerichtet, dass sie ihn verwenden:
Host J1
HostName 123.123.123.123
User ciprian
Host A B C
HostName %h
User ciprian
ProxyJump J1
LocalForward 8501 localhost:8501
Jetzt richte ich einen zweiten JumpHost ein, J2
und möchte über J1
oder eine Verbindung zu denselben Maschinen herstellen J2
. Gibt es eine Möglichkeit, die Konfigurationsdatei so zu schreiben, dass die Maschine, wenn sie J1
im Namen hat, durch springt J1
, oder wenn sie hat J2
, durch springt J2
? Natürlich ohne manuelle Angabe exakter Übereinstimmungen :)
Ich kann die Konfiguration wie folgt schreiben:
# ...
Host *-J1
ProxyJump J1
Host *-J2
ProxyJump J2
Host A* B* C*
# --- Which Host name? ---
User ciprian
# ...
Wenn ich also eingebe ssh A-J1
, werden die Einstellungen zum Springen über J1 übernommen. Beim Parsen der Definition in Bezug auf A*
kann ich jedoch nicht mehr angeben HostName
, da sich dies %h
auf auflösen würde A-J1
und ich möchte, dass es sich einfach auflöst A
.
CanonicalizeHostName
Ich bin davon überzeugt, dass man mit und zaubern kann CanonicalizePermittedCNAMEs
, bin mir aber nicht sicher wie.
Antwort1
Sie können ProxyCommand und einige kleinere Shell-Skripte verwenden:
Host *-prefix1
ProxyCommand ssh -q jump1 'H="%h"; nc ${H%%-prefix1} %p || echo "ProxyCommand failed! >&2"'
Host *-prefix2
ProxyCommand ssh -q jump2 'H="%h"; nc ${H%%-prefix2} %p || echo "ProxyCommand failed! >&2"'