ความแตกต่างระหว่างชื่อโฮสต์และชื่อโฮสต์ในการกำหนดค่า SSH คืออะไร?


23

หน้าคนบอกว่า:

เจ้าภาพ

โฮสต์ จำกัด การประกาศต่อไปนี้ (ไม่เกินคำสำคัญโฮสต์ถัดไป) สำหรับโฮสต์เหล่านั้นที่ตรงกับหนึ่งในรูปแบบที่กำหนดหลังจากคำหลัก หากมีมากกว่าหนึ่งรูปแบบรูปแบบเหล่านั้นควรถูกคั่นด้วยช่องว่าง `* 'เดี่ยวเป็นรูปแบบที่สามารถใช้ในการให้ค่าเริ่มต้นทั่วโลกสำหรับโฮสต์ทั้งหมด โฮสต์คืออาร์กิวเมนต์ชื่อโฮสต์ที่กำหนดในบรรทัดคำสั่ง (เช่นชื่อจะไม่ถูกแปลงเป็นชื่อโฮสต์ที่กำหนดแบบบัญญัติก่อนการจับคู่)

รายการรูปแบบอาจถูกทำให้เป็นโมฆะโดยการนำหน้าด้วยเครื่องหมายอัศเจรีย์ (`! ') หากรายการที่ถูกทำให้ตรงกันถูกจับคู่รายการโฮสต์จะถูกละเว้นโดยไม่คำนึงว่ารูปแบบอื่น ๆ ของการจับคู่บรรทัด การแข่งขันที่ถูกลบจึงมีประโยชน์ในการให้ข้อยกเว้นสำหรับการแข่งขันไวด์การ์ด

ดูรูปแบบสำหรับข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบ

ชื่อโฮสต์

ชื่อโฮสต์ระบุชื่อโฮสต์จริงเพื่อล็อกอิน สามารถใช้เพื่อระบุชื่อเล่นหรือตัวย่อสำหรับโฮสต์ หากชื่อโฮสต์มีลำดับอักขระ `% h 'สิ่งนี้จะถูกแทนที่ด้วยชื่อโฮสต์ที่ระบุในบรรทัดคำสั่ง (สิ่งนี้มีประโยชน์สำหรับการจัดการกับชื่อที่ไม่มีเงื่อนไข) ค่าเริ่มต้นคือชื่อที่กำหนดในบรรทัดคำสั่ง อนุญาตให้ใช้ที่อยู่ IP ที่เป็นตัวเลขได้ (ทั้งในบรรทัดคำสั่งและข้อมูลจำเพาะของชื่อโฮสต์)

ตัวอย่างเช่นเมื่อฉันต้องการสร้างการกำหนดค่า SSH สำหรับ GitHub โฮสต์และชื่อโฮสต์ควรเป็นอย่างไร


3
ในสาระสำคัญ: Hostเป็นสตริงที่ผู้ใช้ให้เป็นอินพุตใน CLI เมื่อเรียกใช้ SSH; HostNameเป็นสตริงที่ไคลเอ็นต์ SSH จะส่งออกผ่านเครือข่ายเมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์
sampablokuper

คำตอบ:


15

สำหรับ github.com คุณ~/.ssh/configอาจมีลักษณะเช่นนี้

Host github.com
    IdentityFile ~/.ssh/key_name_for_github

สำหรับชื่อโฮสต์: ดังที่มนุษย์บอกว่าอนุญาตให้คุณระบุตัวย่อสำหรับโฮสต์ ตัวอย่างเช่นหากคุณ~/.ssh/configมีลักษณะเช่นนี้

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

จากนั้นเมื่อคุณพิมพ์

  • ssh host1คุณเข้าสู่host1.example.comจริง ๆ
  • ssh host2ลงชื่อเข้าใช้anotherdomain.com

ฉันเดาว่าคุณหมายถึง 'ชื่อโฮสต์' แทน 'โฮสต์' ใน~/.ssh/configตัวอย่างที่สองของคุณ?
เดฟ

6

ในการใช้งานง่าย:

Host เป็นชื่อโฮสต์จริง & ไม่มี HostName

หรือ

Host เป็นชื่อเล่นของโฮสต์ & HostNameคือชื่อโฮสต์จริง

ตัวอย่างง่ายๆ:

$ 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>"

หมายเหตุ: หน้าคนถูกต้องทางเทคนิคมันเป็นเพียงคำพูดที่แปลก ฉันจะเพิ่มอีกสองสามคำเพื่อความชัดเจน:HostName Specifies the real host name to log into. This can be used *TOGETHER WITH 'HOST'* to specify nicknames or abbreviations for hosts.


1

ฉันเพิ่งต้องการทำอะไรกับโฮสต์และชื่อโฮสต์ แต่ลืมไวยากรณ์ที่แน่นอน ... แต่ googling เกี่ยวกับมันเป็นระเบียบและหน้าคนไม่เป็นประโยชน์เกินไป ดังนั้นสมมติว่ามีคนอื่นที่มีความต้องการเหมือนกันนี่คือเกร็ดความรู้ของฉัน

โฮสต์ระบุอาร์กิวเมนต์บรรทัดคำสั่งและอาจคิดว่าเป็น) ชื่อโฮสต์จริง / IP, b) shorthand, c) นามแฝง HostName คือชื่อโฮสต์ / IP จริงของเครื่องที่คุณกำลังเชื่อมต่อ ในฟิลด์ชื่อโฮสต์คุณสามารถใช้% h เป็นสตริงชื่อโฮสต์ที่คุณระบุในบรรทัดคำสั่ง (นี่คือส่วนที่ฉันต้องการใช้ในตัวอย่างของฉัน)

ดังนั้นสมมติว่าคุณมีชุดของโฮสต์ที่ชื่อโฮสต์เริ่มต้นด้วย my-proj-host -... และพวกเขาทั้งหมดอยู่ในโดเมน. my.proj.domain.com และฉันจำเป็นต้องเข้าสู่ระบบโดยใช้คีย์ ssh เฉพาะ my-proj-id-rsa และ ID ผู้ใช้เฉพาะ my-proj-user เพื่อให้ชีวิตของฉันง่ายขึ้นฉันจะเพิ่มสิ่งต่อไปนี้ในไฟล์ ~ / .ssh / config

โฮสต์ my-proj-host *

ชื่อโฮสต์% h.my.proj.domain.com

ผู้ใช้ my-proj-user

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

ตอนนี้ฉันสามารถพิมพ์

ssh my-proj-host-1234

หากไม่มีการกำหนดค่าที่จะได้รับ

ssh -i ~ / .ssh / my-proj-id-rsa my-proj-user@my-proj-host-1234.my.proj.domain.com

ประหยัดการพิมพ์เล็กน้อย (และพิมพ์ผิด)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.