Apa perbedaan antara Host dan Nama Host di SSH Config?

23

Halaman manual mengatakan ini:

Tuan rumah

Host Membatasi deklarasi berikut (hingga kata kunci Host berikutnya) hanya untuk host yang cocok dengan salah satu pola yang diberikan setelah kata kunci. Jika lebih dari satu pola disediakan, mereka harus dipisahkan oleh spasi putih. Satu `* 'sebagai suatu pola dapat digunakan untuk menyediakan standar global untuk semua host. Tuan rumah adalah argumen nama host yang diberikan pada baris perintah (yaitu nama tidak dikonversi ke nama host yang dikanonikalisasi sebelum pencocokan).

Entri pola dapat dinegasikan dengan membuatnya awalan dengan tanda seru (`! '). Jika entri yang dinegasikan cocok, maka entri Host diabaikan, terlepas dari apakah ada pola lain di baris yang cocok. Karenanya, pertandingan yang dinegasikan berguna untuk memberikan pengecualian untuk kecocokan wildcard.>

Lihat POLA untuk informasi lebih lanjut tentang pola.

Nama Host

HostName Menentukan nama host asli untuk login. Ini dapat digunakan untuk menentukan nama panggilan atau singkatan untuk host. Jika nama host berisi urutan karakter `% h ', maka ini akan diganti dengan nama host yang ditentukan pada baris perintah (ini berguna untuk memanipulasi nama yang tidak memenuhi syarat). Standarnya adalah nama yang diberikan pada baris perintah. Alamat IP numerik juga diizinkan (baik pada baris perintah dan dalam spesifikasi HostName).

Misalnya, ketika saya ingin membuat SSH Config untuk GitHub, apa yang harus Host dan HostName?

ProgramFoo
sumber
3
Intinya: Hostadalah string yang diberikan pengguna sebagai input pada CLI saat menjalankan SSH; HostNameadalah string yang akan dihasilkan klien SSH melalui jaringan ketika mencoba untuk terhubung ke server.
sampablokuper

Jawaban:

15

Untuk github.com Anda ~/.ssh/configmungkin terlihat seperti ini

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

Untuk hostname: seperti yang dikatakan pria, Anda dapat menentukan singkatan host. Misalnya, jika ~/.ssh/configpenampilan Anda seperti ini

Host host1
    HostName host1.example.com
Host host2
    HostName anotherdomain.com

Lalu saat Anda mengetik

  • ssh host1Anda benar-benar masuk ke host1.example.com
  • ssh host2masuk ke anotherdomain.com
int
sumber
Saya menduga Anda maksud 'Hostname' bukan 'Host' dalam ~/.ssh/configcontoh kedua Anda ?
Dave
6

Dalam penggunaan sederhana:

Host adalah nama host sebenarnya & tidak ada HostName

ATAU

Hostadalah nama panggilan dari host & HostNameadalah nama host yang sebenarnya.

Contoh sederhana:

$ cat ~/.ssh/config
Host dev
    Hostname <hostname>
    User <username>
    IdentityFile <path_to_private_key>

$ ssh dev
# Equivalent to "ssh -i <path_to_private_key> <username>@<hostname>"

Catatan: Halaman manual secara teknis benar, itu hanya sedikit aneh. Saya akan menambahkan beberapa kata lagi untuk kejelasan:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.

mblakesley
sumber
1

Saya baru-baru ini ingin melakukan sesuatu dengan host dan nama host, tetapi lupa sintaks yang tepat ... tetapi googling tentang hal itu berantakan dan halaman manual tidak terlalu membantu. Jadi, dengan anggapan ada orang lain yang memiliki kebutuhan yang sama, inilah kabar baik saya.

Host menentukan argumen baris perintah, dan dapat dianggap sebagai a) nama host / IP aktual, b) singkatan, c) alias. HostName adalah nama host / IP asli dari mesin yang Anda hubungkan. Di bidang HostName, Anda bisa menggunakan% h sebagai string nama host yang Anda tentukan di baris perintah. (Ini adalah bagian yang ingin saya gunakan dalam contoh saya.)

Jadi, katakanlah Anda memiliki satu set host di mana nama host dimulai dengan my-proj-host -... dan semuanya ada dalam domain .my.proj.domain.com, dan saya harus login ke mereka menggunakan kunci ssh tertentu my-proj-id-rsa dan ID pengguna spesifik saya-proj-user. Untuk membuat hidup saya lebih mudah, saya akan menambahkan yang berikut ke file ~ / .ssh / config

Tuan rumah my-proj-host *

HostName% h.my.proj.domain.com

Pengguna my-proj-user

IdentityFile ~ / .ssh / my-proj-id-rsa

Sekarang, saya bisa mengetik

ssh my-proj-host-1234

Tanpa konfigurasi, itu akan terjadi

ssh -i ~ / .ssh / my-proj-id-rsa [email protected]

menyimpan sedikit pengetikan (dan kesalahan ketik).

Marcus Yoo
sumber