Ponownie rozpakuj w .ssh / config


12

W pracy często muszę logować się na hostach, które stosują wspólny schemat nazewnictwa, np. qc01- qc12, hc01- hc10i tak dalej. Wszystkie te muszą uzyskać te same wartości konfiguracji w moim laptopie .ssh/config. Oczywiście mógłbym użyć wpisów dla hostów qc*i hc*, ale zastanawiam się, czy zamiast tego można w jakiś sposób użyć wyrażeń regularnych?

Odpowiedzi:




3

Możesz używać pełnych wyrażeń regularnych w swoim ssh_config.

Odpowiednia dokumentacja jest bardzo trudna do odczytania i zrozumienia przez IMO. Rozumiem to tylko dlatego, że mam ponad 13 lat doświadczenia w Linuksie i ponad 8 lat używania ssh. Oto moje streszczenie dokumentacji:

  • man ssh_config opisuje funkcję o nazwie Match
  • następnie jest funkcja o nazwie, execktóra pozwala ci użyć dowolnego polecenia powłoki do określenia dopasowania
  • przekazywanie parametrów wejściowych do dowolnego polecenia powłoki jest możliwe i opisane w sekcji oznaczonej etykietą TOKENS

W moim przypadku skończyło się na użyciu w moim~/.ssh/config :

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

Testowanie należy wykonać przy użyciu czegoś takiego podstępnego. Aby wykonać te testy, zadzwoń ssh -vvv HOSTNAME. Który pokaże dokładnie, co się dzieje i czy Twój nowy Matchjest poprawnie zaimplementowany.


0

Rozszerzając odpowiedź Trevora:

Możliwe są również bardziej złożone hosty, takie jak dopasowanie foo123.123i foo10.10jedna zasada BEZ posiadania wpisów DNS dla używanych nazw hostów:

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

Użycie ProxyCommand do manipulowania zawartością% h za pomocą powłoki i połączenie się z odpowiednim portem za pomocą netcata. W ten sposób możesz tworzyć ustawienia wstępne dla kategorii hostów, bez tworzenia pojedynczych wpisów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.