SSH config wildcard pada Hostname yang diperluas

25

Saya ingin memiliki wildcard di konfigurasi SSH saya untuk menetapkan nama pengguna default saya ke nilai tertentu untuk semua host di domain tertentu. Tetapi saya juga ingin memiliki beberapa nama pendek untuk beberapa host tertentu. Saya berharap sesuatu seperti ini berfungsi:

Host *.mydomain.com
    User myusername
Host host1
    Hostname host1.mydomain.com

Dengan pengaturan itu, jika saya mengetiknya ssh host1.mydomain.comakan dievaluasi [email protected], tetapi jika saya mengetiknya ssh host1tidak berlaku pengaturan Pengguna saya dan saya melihat [email protected].

Apakah ada cara agar wildcard cocok dengan nama host terakhir yang diperluas sehingga saya bisa mengetik formulir pendek atau panjang dan mendapatkan hasil yang sama?

Mu Mind
sumber
Bagaimana jika Anda mengubah urutan, menempatkan bagian wildcard kedua.
esmit
Sudahkah Anda mencobanya? Saya cukup yakin hanya memberi Anda nama pengguna yang benar dengan domain yang salah, jika ada.
Mu Mind
Saya belum mencobanya, itu sebabnya saya menjadikannya komentar sebagai sesuatu untuk dicoba, bukan jawaban yang dapat dibatalkan.
esmit

Jawaban:

13

Cukup gunakan:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • Pola-pola alternatif disediakan oleh blanko pembatas di baris Host .
  • Semua Pola Host yang cocok diterapkan.
  • Jika suatu opsi muncul beberapa kali, hanya kejadian pertama yang digunakan

sumber
3
Itu menghemat sedikit mengetik setidaknya. Sepertinya Anda tidak mengetahui cara apa pun untuk menghindari duplikasi informasi domain?
Mu Mind
Akan lebih bagus jika SSH hanya bisa mencoba menambahkan domain default, yaitu "lan" atau "mycompany.com", daripada harus membuat kode keras di file konfigurasi.
Saustrup
18

Anda cukup mengatur CanonicalizeHostnameuntuk yesmem-reparse ssh_config dengan nama host kanonik alias Anda. Sebagai contoh:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

Atau, jika Anda juga ingin memetakan ulang nama host, Anda dapat menggunakan Matchalih-alih Hosthanya mencocokkan nama host kanonik. Misalnya, di:

Match canonical host="*.mydomain.com"
    User myusername

Host host2.mydomain.com
    HostName host2.otherdomain.com

Arahan pengguna tidak akan ditetapkan saat Anda terhubung host2.mydomain.com.

Timesquare
sumber
Perhatikan bahwa masih ada versi lama ssh di luar sana yang tidak mendukung opsi ini - jika Anda mengalami salah satunya, seperti yang saya lakukan, solusi Host masih akan berfungsi.
Kyrstellaine
2

Memanfaatkan CanonicalDomains juga akan berfungsi.

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

Jika Anda ingin memiliki nama pendek untuk host tertentu, misalnya:

Host h
Hostname host1

Saya tidak akan merekomendasikan nama yang sesingkat itu.

Jacobs
sumber
1

Anda dapat menggunakan% h.mydomain.com di .ssh / config Anda.


 Host host?
 User myusername
 Hostname %h.mydomain.com

Host host?? User myusername Hostname %h.mydomain.com

Host host??? User myusername Hostname %h.mydomain.com

Sekarang Anda bisa melakukannya:

ssh host1
dari pada
ssh host1.mydomain.com
ssh host10
dari pada
ssh host10.mydomain.com
dan ssh host100

Salam, Bert

Bert de Ridder
sumber