SSH config wildcard บนชื่อโฮสต์แบบขยาย


23

ฉันต้องการให้ตัวแทนในการกำหนดค่า SSH ของฉันเพื่อตั้งชื่อผู้ใช้เริ่มต้นของฉันเป็นค่าเฉพาะสำหรับโฮสต์ทั้งหมดในโดเมนที่แน่นอน แต่ฉันยังต้องการชื่อสั้น ๆ สำหรับโฮสต์บางแห่ง ฉันคาดหวังว่าสิ่งนี้จะทำงาน:

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

ด้วยการตั้งค่าเหล่านั้นถ้าผมพิมพ์ssh host1.mydomain.comมันประเมินmyusername@host1.mydomain.comแต่ถ้าผมพิมพ์มันไม่ได้ใช้การตั้งค่าผู้ใช้ของฉันและฉันแทนดูssh host1mylocalusername@host1.mydomain.com

มีวิธีที่จะใช้สัญลักษณ์แทนการแข่งขันในชื่อโฮสต์ที่ขยายสุดท้ายเพื่อให้ฉันสามารถพิมพ์รูปแบบสั้นหรือยาวและได้ผลลัพธ์เดียวกัน


ถ้าคุณเปลี่ยนคำสั่งให้วางส่วนไวด์การ์ดในส่วนที่สอง
esmit

คุณเคยลองไหม ฉันค่อนข้างมั่นใจว่าคุณเพิ่งได้รับชื่อผู้ใช้ที่ถูกต้องกับโดเมนผิดถ้ามี
Mu Mind

ฉันไม่ได้ลองเลยนั่นเป็นเหตุผลว่าทำไมฉันถึงทำให้มันเป็นคำตอบที่เป็นความคิดเห็นแทนที่จะลองตอบดูได้
esmit

คำตอบ:


12

เพียงใช้:

Host *.mydomain.com host1
User myusername

Host host1
Hostname host1.mydomain.com
  • รูปแบบทางเลือกมีให้โดยการเว้นว่างในบรรทัดโฮสต์
  • ทั้งหมดที่ตรงกับรูปแบบโฮสต์ถูกนำมาใช้
  • หากมีตัวเลือกเกิดขึ้นหลายครั้งจะใช้การเกิดขึ้นครั้งแรกเท่านั้น

3
นั่นช่วยประหยัดการพิมพ์เพียงเล็กน้อยอย่างน้อย ดูเหมือนคุณจะไม่ทราบวิธีการหลีกเลี่ยงการทำซ้ำข้อมูลโดเมนหรือไม่
Mu Mind

มันจะดีถ้า SSH สามารถลองเพิ่มโดเมนเริ่มต้นเช่น "lan" หรือ "mycompany.com" แทนที่จะต้องใช้รหัสในแฟ้มการกำหนดค่า
Saustrup

16

คุณสามารถตั้งค่าCanonicalizeHostnameเป็นyesreparse ssh_config ด้วยชื่อโฮสต์แบบบัญญัติของนามแฝงของคุณ ตัวอย่างเช่น:

CanonicalizeHostname yes
Host *.mydomain.com
    User myusername

Host host1
    HostName host1.mydomain.com

หรือหากคุณต้องการทำการแมปชื่อโฮสต์อีกครั้งคุณสามารถใช้MatchแทนHostการจับคู่เฉพาะชื่อโฮสต์แบบบัญญัติ ตัวอย่างเช่นใน:

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

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

host2.mydomain.comคำสั่งของผู้ใช้จะไม่ถูกตั้งค่าเมื่อคุณเชื่อมต่อกับ


โปรดทราบว่ายังมีเวอร์ชันเก่าของ ssh อยู่ที่นั่นซึ่งไม่สนับสนุนตัวเลือกเหล่านี้ - หากคุณพบหนึ่งในนั้นดังที่ฉันทำไว้โซลูชันโฮสต์จะยังคงใช้งานได้
Kyrstellaine

2

การใช้ CanonicalDomains ก็จะทำงานเช่นกัน

CanonicalizeHostname yes
CanonicalDomains mydomain.com

Host *
User myusername

หากคุณต้องการมีชื่อย่อสำหรับโฮสต์เฉพาะเช่น:

Host h
Hostname host1

ฉันจะไม่แนะนำชื่อที่สั้น แต่


1

คุณสามารถใช้% h.mydomain.com ใน. ssh / config ของคุณ


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

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

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

ตอนนี้คุณสามารถทำได้:

ssh host1
แทน
ssh host1.mydomain.com
ssh host10
แทน
ssh host10.mydomain.com
และ ssh host100

ขอแสดงความนับถือเบิร์ต

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