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?
Host foo <LF>Hostname *.a.b.c.d
Więc może to zadzwoniHost *.a.b.c.d
ssh -vvv foo
Odpowiedzi:
Ponieważ
Host
opcja, jak opisano na stronie podręcznika: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 zCanonicalizeHostname
.źródło
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
który nie wykona żadnej kanonizacji, ale umożliwi ponowne odczytanie pliku konfiguracyjnego, dzięki czemu Twój przykład będzie działać.
źródło