ssh_config, Hostabschnitt für Server in der Suchdomäne

1

Ich habe test.example.com in meinen DNS-Suchdomänen. Wenn ich eine ssh server01Verbindung herstelle, wird wie erwartet eine Verbindung zu meinem Server hergestellt. Es folgt jedoch nicht meinen ssh_config-Regeln, da es nicht übereinstimmt:

Host *.test.example.com 
User djimenez
ForwardAgent yes

Kein Problem, ich werde eine Wildcard hinzufügen!

Host *
User djimenez
ForwardAgent yes

Dies gilt jedoch für jeden Host. Nicht nur kurze DNS-Namen (wenn Sie so wollen, keine vollqualifizierten Domänennamen).

Meine Frage, gibt es überhaupt eine Hostregel zu erstellen, die nur kurzen DNS-Namen entspricht? Oder noch besser wäre, wenn es einen magischen Weg für ssh gäbe, den vollqualifizierten Domänennamen vom DNS zu erhalten (falls ich mehrere Suchdomänen habe).

danieljimenez
quelle

Antworten:

4

In einer Host- Spezifikation sind nur zwei Platzhalter zulässig, *die einer Zeichenfolge und ?einem einzelnen Zeichen entsprechen. Sie können auch !ein Muster voranstellen , um den Übereinstimmungssinn zu negieren, sodass er auf Hostwerte angewendet wird , die nicht mit dem Rest des Musters übereinstimmen.

Also, eine Regel wie diese:

Host !*.*
    SomeOption...

sollte für jeden Hostnamen gelten, der keinen Punkt enthält.

Sie können auch mehr als ein Muster pro Host- Zeile haben, falls die Regeln auf die Langform der Hostnamen angewendet werden sollen:

Host !*.* *.test.example.com
    SomeOption...
Kenster
quelle
Du hast mich sehr nahe gebracht. Letztendlich wollte ich Host * !*.*. Vielen Dank!
Danieljimenez
Ich denke nicht, dass der zweite Vorschlag (Mischen des negierten Eintrags und des Musters) funktioniert, da der ssh_configManpage If a negated entry is matched, then the Host entry is ignored, regardless of whether any other patterns on the line matchzufolge der Versuch, auf host-01.test.example.comden Block zuzugreifen , nicht mit dem Block übereinstimmt, da er durch das !*.*Muster "ausgeschlossen" wird .
Lsowen
0

In ssh_configder Manpage heißt es: "Der Host ist das in der Befehlszeile angegebene Argument hostname (dh der Name wird vor dem Abgleichen nicht in einen kanonisierten Hostnamen konvertiert)."

Eine Möglichkeit, dies zu umgehen, besteht darin, ein Wrapper-Skript zu erstellen, das den von Ihnen angegebenen Hostnamen nach Möglichkeit zunächst auf einen vollqualifizierten Domänennamen erweitert und anschließend an ssh weiterleitet (siehe z. B. https://serverfault.com/questions/567272/expand-hostnames-). to-fqdn-before-calling-ssh

Jaap Eldering
quelle