Dari ssh_config
halaman manual:
Untuk setiap parameter, nilai yang diperoleh pertama akan digunakan. File konfigurasi berisi bagian yang dipisahkan oleh spesifikasi "Host", dan bagian itu hanya berlaku untuk host yang cocok dengan salah satu pola yang diberikan dalam spesifikasi. Nama host yang cocok adalah yang diberikan pada baris perintah.
Karena nilai yang diperoleh pertama untuk setiap parameter digunakan, lebih banyak deklarasi khusus host harus diberikan di dekat awal file, dan default umum di akhir.
Selain itu saya akan memastikan saya memahami 2 bagian ini jika Anda tidak jelas bagaimana fungsi Host dan POLA. Hanya ada 1 level pencocokan yang terjadi. Fasilitas ini sangat mendasar dalam kemampuan regexnya, tetapi masih kuat sekali Anda grok.
Bagian inang
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.
POLA
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"
Aturan pelapisan
Masalah dengan pendekatan Anda adalah bahwa pola yang cocok dengan bagian Host pertama tidak cocok dengan yang kedua. Saya biasanya melakukan sesuatu seperti ini:
Host *
User myuser
IdentityFile ~/.ssh/myidentity
Host blah
HostName complicated.hostname.com
Satu hal yang orang biasanya tidak mengerti dengan aturan ini adalah mereka bisa mengulanginya. Jadi yang sering saya lakukan adalah memiliki beberapa bagian dan saya memecahnya menggunakan Host *
.
Host *
User user1
Host blah1
HostName complicated1.hostname.com
Host blah2
HostName complicated2.hostname.com
Host *
User user2
Host *
yang cocok akan menggunakan user2 sebagai pengguna default mereka, kecuali jika mereka secara eksplisit menentukannya sendiri.Host *
tercapai, aturan 'diperoleh-nilai-pertama-untuk-setiap-parameter-digunakan-berlaku' dan dengan demikian ini dan semuaUser
definisi berikut diabaikan. Pengecualian dari aturan ini adalahIdentityFile
kata kunci, btw.SSH menerapkan semua bagian yang cocok dengan nama host seperti yang disediakan pada baris perintah (mis.
HostName
Aturan yang dihadapinya tidak mempengaruhi pemeriksaan kondisi selanjutnya). JikaCanonicalizeHostname
diaktifkan, itu akan menerapkan kembali file konfigurasi lagi setelah selesai, menggunakan nama host yang diperbarui. (Beberapa versi SSH melakukan ini terlepas dariCanonicalizeHostname
dan contoh Anda akan bekerja dengan versi tersebut; tetapi itu dianggap sebagai bug oleh SSH devs. Lihat # 2267 )Yang berarti Anda dapat menggunakan
CanonicalizeHostname
untuk membuat contoh Anda berfungsi, dengan menambahkanyang tidak akan melakukan kanonikisasi apa pun tetapi akan memungkinkan melakukan pass kedua dengan nama host yang diperbarui. (Perhatikan bahwa itu masih tidak akan membuat parsing konfigurasi "rekursif", cukup ulangi sekali. Jadi jika Anda mengubah nama host dua kali, itu tidak akan berhasil.)
sumber
Host nickname; Hostname hostname
bait tidak lagi dapat memberikan julukan. Ini akan berfungsi jika Anda menambahkanCanonizalizeHostname yes
kata kunci di setiap blok nama panggilan, tetapi itu menggandakan ukuran blok nama panggilan dan terlihat jelek.Dari halaman manual
Coba alihkan urutan entri Anda.
sumber