Ze strony podręcznika ssh_config
:
Dla każdego parametru zostanie wykorzystana pierwsza uzyskana wartość. Pliki konfiguracyjne zawierają sekcje oddzielone specyfikacjami „Host”, a sekcja ta jest stosowana tylko dla hostów, które pasują do jednego z wzorców podanych w specyfikacji. Dopasowana nazwa hosta to nazwa podana w wierszu polecenia.
Ponieważ używana jest pierwsza uzyskana wartość dla każdego parametru, na początku pliku należy podać więcej specyficznych dla hosta deklaracji, a na końcu ogólne wartości domyślne.
Dodatkowo upewnij się, że rozumiem te 2 sekcje, jeśli nie wiesz, jak działają Host i WZORY. Trwa tylko 1 poziom dopasowania. Ta funkcja jest bardzo podstawowa pod względem funkcji wyrażania regularnego, ale nadal jest potężna, gdy ją uruchomisz.
Sekcje gospodarza
The possible keywords and their meanings are as follows (note that keywords
are case-insensitive and arguments are case-sensitive):
Host Restricts the following declarations (up to the next Host keyword)
to be only for those hosts that match one of the patterns given
after the keyword. If more than one pattern is provided, they
should be separated by whitespace. A single ‘*’ as a pattern can
be used to provide global defaults for all hosts. The host is the
hostname argument given on the command line (i.e. the name is not
converted to a canonicalized host name before matching).
A pattern entry may be negated by prefixing it with an exclamation
mark (‘!’). If a negated entry is matched, then the Host entry is
ignored, regardless of whether any other patterns on the line
match. Negated matches are therefore useful to provide exceptions
for wildcard matches.
See PATTERNS for more information on patterns.
WZORY
A pattern consists of zero or more non-whitespace characters, ‘*’ (a
wildcard that matches zero or more characters), or ‘?’ (a wildcard that
matches exactly one character). For example, to specify a set of
declarations for any host in the “.co.uk” set of domains, the following
pattern could be used:
Host *.co.uk
The following pattern would match any host in the 192.168.0.[0-9] network
range:
Host 192.168.0.?
A pattern-list is a comma-separated list of patterns. Patterns within
pattern-lists may be negated by preceding them with an exclamation
mark (‘!’). For example, to allow a key to be used from anywhere within an
organisation except from the “dialup” pool, the following entry
(in authorized_keys) could be used:
from="!*.dialup.example.com,*.example.com"
Zasady nakładania warstw
Problem z twoim podejściem polega na tym, że wzorzec pasujący do pierwszej sekcji Hosta nie pasuje do drugiej. Zazwyczaj robię coś takiego:
Host *
User myuser
IdentityFile ~/.ssh/myidentity
Host blah
HostName complicated.hostname.com
Jedną z rzeczy, których ludzie zwykle nie rozumieją według tych zasad, jest to, że mogą powtarzać. Więc często robię to z wieloma sekcjami i dzielę je za pomocą Host *
.
Host *
User user1
Host blah1
HostName complicated1.hostname.com
Host blah2
HostName complicated2.hostname.com
Host *
User user2
Host *
dopasowanym drugim, będą używać user2 jako domyślnego użytkownika, chyba że sami wyraźnie to określą.Host *
obowiązuje reguła „pierwsza uzyskiwana wartość dla każdego parametru - używana”, a zatem ta i wszystkie poniższeUser
definicje są ignorowane. Wyjątkiem od tej reguły sąIdentityFile
słowa kluczowe, btw.SSH stosuje wszystkie sekcje, które pasują do nazwy hosta podanej w wierszu poleceń (tzn.
HostName
Reguły, które napotyka, nie wpływają na sprawdzenie kolejnych warunków). JeśliCanonicalizeHostname
jest włączona, ponownie zastosuje pliki konfiguracyjne po zakończeniu, używając zaktualizowanej nazwy hosta. (Niektóre wersje SSH robiły to niezależnie od tegoCanonicalizeHostname
i twój przykład działałby z tymi wersjami; ale jest to uważane za błąd przez twórców SSH. Patrz # 2267 ).Co oznacza, że możesz użyć,
CanonicalizeHostname
aby Twój przykład działał, dodającco nie spowoduje żadnej kanonizacji, ale umożliwi wykonanie drugiego przejścia ze zaktualizowaną nazwą hosta. (Pamiętaj, że nadal nie spowoduje to, że parsowanie konfiguracji będzie „rekurencyjne”, po prostu powtórz to raz. Jeśli więc zmienisz nazwę hosta dwa razy, to nie zadziała).
źródło
Host nickname; Hostname hostname
zwrotki nie są już w stanie zapewnić pseudonimu. Będzie działać, jeśli dodaszCanonizalizeHostname yes
słowo kluczowe w każdym bloku pseudonimu, ale podwaja rozmiar bloków pseudonimu i wygląda brzydko.Ze strony podręcznika
Spróbuj zmienić kolejność wpisów.
źródło