Opcje konfiguracji ssh nie są stosowane rekurencyjnie

0

Mam coś takiego w moim ~/.ssh/config:

Host     foo
Hostname foo001.a.b.c.d

Host     bar
Hostname foo011.a.b.c.d

Host            *.a.b.c.d
ProxyCommand    ssh -A -l sds XXX.YYY.ZZZ.TTT nc %h %p

Host            *
ForwardAgent    yes

kiedy robię ssh -vvv foo Widzę to:

$ ssh -vvv foo
debug1: /.../.ssh/config line 36: Applying options for foo
debug1: /.../.ssh/config line 50: Applying options for *

Dlaczego jest opcja ProxyCommand Nie zastosowano? The Host tam pasuje Hostname w foo.

Czy istnieje sposób, aby zrobić to, co chcę, tj. Zmapować krótką nazwę do FQDN, a następnie obsłużyć je osobno?

sds
źródło
jako niezbyt zaznajomiony z tym, jak korzystać z linii poleceń proxy, ale powinieneś pokazać linię ssh, której używasz w linii poleceń.
barlop
może jeśli chcesz zadzwonić do innego, musisz to zrobić Host foo <LF>Hostname *.a.b.c.d Więc może to zadzwoni Host *.a.b.c.d
barlop
Linia poleceń ssh znajduje się w tekście pytania
sds
Skoro tak mówisz. Chociaż tego nie widzę. Możesz cytować to w komentarzu, więc wiem, o czym mówisz.
barlop
polecenie jest ssh -vvv foo
sds

Odpowiedzi:

0

Ponieważ Host opcja, jak opisano na stronie podręcznika:

Host jest zazwyczaj argumentem nazwy hosta podanym w wierszu poleceń (zobacz wyjątki w opcji CanonicalizeHostname).

Domyślnie konfiguracja nie jest ponownie analizowana. Jeśli chcesz dopasować do zmodyfikowanej nazwy hosta, powinieneś spróbować Match słowo kluczowe, które zapewnia większą elastyczność. Możesz osiągnąć to, co chcesz, łącząc to z CanonicalizeHostname.

Jakuje
źródło
0

Wygląda na to, że ponowne zastosowanie reguł po dodaniu niechcianej zmiany nazwy hosta do OpenSSH, a następnie późniejsze cofnięcie (patrz błąd # 2267 ); aktualna wersja działa tylko wtedy, gdy włączona jest kanonizacja nazwy hosta. (Nieco irytująco bardziej permisywna wersja została dołączona przynajmniej do Ubuntu 14/15, więc zaktualizowanie jej do 16 może przerwać konfigurację SSh).

Nieco brudne obejście to ustawienie

Host *
  CanonicalizeHostname yes
  CanonicalizeFallbackLocal no

który nie wykona żadnej kanonizacji, ale umożliwi ponowne odczytanie pliku konfiguracyjnego, dzięki czemu Twój przykład będzie działać.

Tgr
źródło