ฉันสามารถกำหนดค่า ubuntu เพื่อผนวกโดเมนต่อท้ายคำขอ ssh hostname ได้หรือไม่


9

ฉันมีเซิร์ฟเวอร์จำนวนมากและพวกเขาทั้งหมดลงท้ายด้วย servers.company.net เดียวกันดังนั้นตัวอย่างเช่น vded-xx-001.servers.company.net และสงสัยว่ามันเป็นไปได้ไหมที่จะทำให้ฉันพิมพ์ vded- xx-001 และให้ผนวกเซิร์ฟเวอร์.company.netโดยอัตโนมัติหรือไม่

ดังนั้นฉันต้องการพิมพ์

ssh user@vded-xx-001

และเชื่อมต่อกับ

ssh user@vded-xx-001.servers.company.net

ฉันได้ลองตั้งค่าโดเมน DNS-search ของฉันไปที่ servers.company.net ใน / etc / network / interfaces แต่สิ่งนี้ไม่ได้ผลลัพธ์ตามที่ต้องการ

ใครสามารถชี้ฉันในทิศทางที่ถูกต้อง

ขอบคุณล่วงหน้า


มีเหตุผลใดที่คุณไม่สามารถเพิ่มsearch company.netให้กับ /etc/resolv.conf ได้?
Hennes

@Hennes การเพิ่มการค้นหา company.net และ servers.company.net ไปยัง resolv.conf ได้ทำงานแล้ว อย่างไรก็ตามมีคำเตือนที่ด้านบนของไฟล์ว่าการเปลี่ยนแปลงของฉันจะถูกเขียนทับหากเป็นกรณีนี้ฉันจะทำให้ถาวรได้อย่างไร
Tim Lassie Freeborn

1
ฉันชอบที่จะตอบว่าและคราดในตัวแทนพิเศษ แต่โพสต์นี้แล้วตอบว่าค่อนข้างดี: :-) askubuntu.com/questions/157154/ …
Hennes

ที่จริงตรงกันข้ามกับสิ่งที่จะกล่าวถึงในคำถามที่ว่ามันเป็นปกติที่ดีที่สุดที่จะรวมรายชื่อโดเมนค้นหาทั้งใน/etc/network/interfaces(โดยใช้dns-searchตัวเลือก) Search domainsหรือในด้านการกำหนดค่าการเชื่อมต่อ
jdthood

แทนที่จะล้อเล่นกับตัวแก้ไขค่าท้องถิ่นโซลูชันนี้ง่ายกว่าและพกพาได้
OrangeDog

คำตอบ:


19

อาจเป็นไปได้ว่าคุณได้แก้ไขปัญหานี้แล้ว แต่บางทีในภายหลังอาจช่วยใครคนหนึ่งได้: คุณไม่จำเป็นต้องยุ่งกับคุณresolv.confเพียงแค่ใช้สิ่งนี้ในของคุณ~/.ssh/config:

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername

ดังนั้นหลังจากนั้นคุณสามารถใช้:

ssh vded-alotofstuff-001
ssh vded-somethingels-001
ssh test-02-something-fixed-somethingelse

นี่ควรเป็นคำตอบที่ยอมรับได้
slm

นี่เป็นวิธีในการแก้ปัญหา แต่ไม่ได้แก้ปัญหาการแก้ปัญหาชื่อทั้งระบบมันจะแก้ปัญหาสำหรับชื่อโฮสต์ ssh เท่านั้น วิธีปฏิบัติที่ดีที่สุดสำหรับฉันคือการได้รับชื่อโฮสต์ที่ถูกต้องทั้งระบบและไม่ต้องปรับแต่งบริการเฉพาะ (ssh) เพื่อให้สามารถแก้ไขชื่อโฮสต์ที่ต้องการได้
Philippe Gachoud

1
ในกรณีที่ลืมและมองนี้ขึ้นมาอีกครั้งในภายหลังหากคุณต้องการให้ชื่อสั้นและระยะยาวทั้งในขณะที่ร่วมกำหนดค่าเดียวกันเพียงแค่ระบุรายการที่ 1 ด้วยHost vded-*.servers.company.net Hostname %hจากนั้นในรายการที่ 2 Host vded-*ด้วยHostname %h.servers.company.netและ params อื่น ๆ เช่น User, IdentityFile ฯลฯ
bksunday

6

นี่คือทางออกที่ง่ายที่สุด มันใช้งานได้สำหรับโฮสต์ทั้งหมดไม่ต้องการรูทหรือการเข้าถึงระบบ DNS / ตัวแก้ไขใด ๆ

เพิ่มที่ด้านบนของ~/.ssh/configไฟล์ของคุณ(หรือสร้างหากยังไม่มีอยู่):

CanonicalizeHostname yes
CanonicalDomains servers.company.net

เอกสาร ( man 5 ssh_config):

CanonicalizeHostname

ควบคุมว่าดำเนินการการกำหนดชื่อโฮสต์ให้ชัดเจนหรือไม่ ค่าเริ่มต้นไม่ใช่จะไม่ทำการเขียนชื่อใหม่และให้ตัวแก้ไขระบบจัดการการค้นหาชื่อโฮสต์ทั้งหมด หากตั้งค่าเป็นใช่ดังนั้นสำหรับการเชื่อมต่อที่ไม่ได้ใช้ProxyCommand , ssh จะพยายามกำหนดชื่อโฮสต์ที่ระบุในบรรทัดคำสั่งโดยใช้CanonicalDomainsต่อท้ายและกฎCanonicalizePermittedCNAME หากCanonicalizeHostnameถูกตั้งค่าเป็นAlways การกำหนดมาตรฐานจะถูกใช้กับการเชื่อมต่อพร็อกซีด้วยเช่นกัน

หากเปิดใช้งานตัวเลือกนี้ไฟล์การกำหนดค่าจะถูกประมวลผลอีกครั้งโดยใช้ชื่อเป้าหมายใหม่เพื่อรับการกำหนดค่าใหม่ในการจับคู่HostและMatch stanzas


มันทำงานได้ดีที่สุดสำหรับฉัน คุณไม่จำเป็นต้องเพิ่ม CanonicalDomains เพียงแค่แถวที่ 1 วิธีนี้ใช้ได้แม้ว่าคุณจะเชื่อมต่อกับเครือข่ายอื่น
Adam Wallner

2
@ AdamWallner คุณไม่ต้องเพิ่มCanonicalDomainsมันจะใช้งานได้กับโดเมนการค้นหาของเครือข่ายปัจจุบันเท่านั้น ถ้าคุณทำ (และคุณสามารถแสดงรายการหลาย) แล้วมันจะทำงานสำหรับการแก้ปัญหาทั้งหมดของชื่อโฮสต์เหล่านั้นบนใด ๆเครือข่ายที่คุณอาจจะเชื่อมต่อไปยัง
OrangeDog

@ deed02392 นั่นคือสิ่งที่มันทำตามที่ระบุในเอกสาร
OrangeDog

2

ใช่คุณสามารถทำได้โดยสร้างไฟล์กำหนดชื่อ~/.ssh/configและป้อนเนื้อหาต่อไปนี้:

Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net

ตอนนี้คุณต้องพิมพ์สิ่งนี้ (คุณไม่จำเป็นต้องใช้ชื่อผู้ใช้อีกต่อไป):

$ ssh vded-xx-001

สิ่งนี้ยังทำงานร่วมกับยูทิลิตี้บรรทัดคำสั่งscp:

$ scp filename vded-xx-001:/path/

1
ฉันรู้ว่าสิ่งนี้ใช้ได้กับโฮสต์แต่ละคน แต่ฉันมีหลายร้อยคนและหวังว่าฉันจะสามารถสร้างกฎที่เลือก VDED- * จากนั้นชื่อโฮสต์จะเป็น host.servers.company.net
Tim Lassie Freeborn

1
@TimLassieFreeborn: คุณสามารถเขียนสคริปต์ที่สร้างรายการที่จำเป็นสำหรับไฟล์ปรับแต่ง ฉันไม่รู้ว่าคุณสามารถทำได้หรือไม่
Flimm

@TimLassieFreeborn ดูคำตอบของฉัน
OrangeDog

2

ทางออกสำหรับปัญหาของฉันคือการเพิ่มโดเมนการค้นหาไปที่resolv.conf:

search servers.company.net

สิ่งนี้ทำให้ฉันเข้า

ssh user@vded-xx-001

สำหรับเซิร์ฟเวอร์ใด ๆ ของฉันและเชื่อมต่อกับที่อยู่ที่ถูกต้อง

ขอบคุณ @Hennes สำหรับคำตอบ


2
สมมติว่าคุณกำลังใช้งาน Ubuntu 12.04 ขึ้นไปคุณไม่ควรแก้ไข /etc/resolv.conf โดยตรงเนื่องจากยูทิลิตี้ resolvconf สร้างไฟล์ดังกล่าว (ที่จริงแล้วมันสร้าง /run/resolvconf/resolv.conf ที่ /etc/resolv.conf เป็นลิงค์สัญลักษณ์) แทนคุณควรกำหนดค่าการตั้งค่า DNS ผ่านตัวกำหนดค่าอินเตอร์เฟสแทน ifup หรือ NetworkManager Ifup : แก้ไข / etc / network / interfaces และเพิ่มdns-search servers.company.netบรรทัดใน stanza สำหรับอินเตอร์เฟสเครือข่ายภายนอกของเครื่อง นิวเม็กซิโก : เพิ่มservers.company.netลงในSearch domainsฟิลด์บนแท็บ IPv4 สำหรับการเชื่อมต่อ
jdthood

หาก/etc/resolv.confไม่ใช่ลิงก์สัญลักษณ์ไปยัง../run/resolvconf/resolv.confบนเครื่องของคุณsudo dpkg-reconfigure resolvconfให้รันเพื่อกู้คืนลิงก์สัญลักษณ์
jdthood

1

หากคุณกำลังใช้ข้อมูลประจำตัว SSH - และกับเซิร์ฟเวอร์จำนวนมากมันก็คุ้มค่าที่จะดู - แล้ว OrangeDog กล่าวว่าการตั้งค่า CanonicaliseHostname และ CanonicaliseDomains จะเปิดใช้งานการจับคู่กับรายการ @ cert-authority ในโฮสต์ที่คุณรู้จัก

รายการ known_hosts @ cert-Authority * .example.com ssh-rsa AAAddadfkjaeio ...

หากไม่มีตัวเลือก Canonicalise คุณจะต้องใช้ "ssh host.example.com"

ด้วยตัวเลือก Canonicalise "ssh myhost" จะจับคู่

ฉันได้เพิ่มสิ่งนี้เป็นความคิดเห็นที่ OrangeDogs ตอบถ้าตัวแทนอนุญาต ...


0

สำหรับวิธีแก้ปัญหาอย่างรวดเร็วที่ทำงานในโปรแกรมที่แตกต่างกันคุณยังสามารถตั้งค่าโดเมนvded-xx-001ให้เปลี่ยนเส้นทางไปยังที่อยู่ IP ที่ต้องการโดยแก้ไข/etc/hostsเพื่อรวมบรรทัดดังนี้:

173.194.41.90  vded-xx-001

สิ่งนี้ใช้ได้ในเบราว์เซอร์ของคุณ: http://vded-xx-001/

เช่นเดียวกับอรรถประโยชน์บรรทัดคำสั่งเช่น SSH:

$ ssh user@vded-xx-001

(โดยส่วนตัวแล้วฉันชอบโซลูชันการตั้งค่าSSH )


0

สำหรับการแก้ปัญหาชื่อโดเมนทั้งระบบฉันต้องการตั้งค่าสิ่งต่าง ๆ ในเครือข่ายของฉันในครั้งเดียว ดังนั้นฉันจึงตั้งชื่อโดเมนและเซิร์ฟเวอร์ DNS ใน DHCP Server เพื่อให้เครื่องทั้งหมดมีสิทธิ์resolv.confรวมถึง

  • IP เซิร์ฟเวอร์ DNS หลัก
  • โดเมน
  • ค้นหาคำสั่ง

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

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