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?

andreas-h
źródło

Odpowiedzi:

4

Proszę zobaczyć PATTERNSsekcję w man ssh_config.

Długa odpowiedź brzmi: nie, nie możesz, chyba że założysz łatkę, aby sshto obsługiwać.

gelraen
źródło
Nie mogę znaleźć tej sekcji w swoim man ssh_config.
Patryk
1
spróbuj linux.die.net/man/5/ssh_config
gelraen
Jaka to wersja się pojawiła?
vonbrand
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.

Trevor Boyd Smith
źródło
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.

chochlik
źródło