วิธีค้นหา ip ของ ssh HostName


10

มีวิธีง่ายๆในการดึงข้อมูล IP HostNameจาก ssh config บนบรรทัดคำสั่งหรือไม่? หลายครั้งที่ฉันต้องใช้scpและต้องการเชื่อมต่อกับเครื่อง แต่ฉันจำได้เพียงชื่อโฮสต์


1
SCP จะอ่านของคุณและ.ssh/config /etc/ssh/ssh_configมีเหตุผลที่คุณไม่สามารถสแกนชื่อแทนที่กำหนดในการกำหนดค่าได้หรือไม่
Tim Kennedy

คุณควรเพิ่มนี่เป็นคำตอบ ฉันคิดว่าเมื่อฉันลองมันครั้งแรกฉันไม่ได้ให้กุญแจหรืออะไรเลยดังนั้นมันจึงไม่รู้จักโฮสต์
m33lky

ดูเหมือนคำตอบเล็กน้อย แต่ฉันเพิ่มไว้ พร้อมกับสิ่งที่ฉันพิจารณาให้เป็น ssh config ที่น่าสนใจที่เกี่ยวข้อง
Tim Kennedy

คำตอบ:


2

SCP จะอ่านของคุณและ~/.ssh/config /etc/ssh/ssh_configตราบใดที่คุณคัดลอกไปยัง / จากชื่อหนึ่งในชื่อแทนโฮสต์ในการกำหนดค่า ssh ของคุณก็ควรจะทำงาน

เนื่องจากดูเหมือนจะเป็นคำตอบสั้น ๆ ต่อไปนี้เป็นข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถทำได้ด้วย ssh config ...

นี่คือโพสต์ที่อธิบายคุณสมบัติขั้นสูงบางส่วนของไฟล์ ssh config: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- เหม็น-VPN ซอฟแวร์ /

ต้องการช่องสัญญาณ ssh / scp ผ่านพร็อกซี http หรือไม่ ไม่มีปัญหาเพียงใช้ขั้นตอนที่อธิบายไว้ที่นี่: http://www.mtu.net/~engstrom/ssh-proxy.php

การใช้ตัวเลือก ProxyCommand อื่น: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/


1
คำตอบสั้น ๆ ตรงประเด็นนั้นเยี่ยมยอด ไม่อย่างนั้นมันง่ายที่จะออกนอกหัวข้อ ทุกคนที่ทำอุโมงค์ควรจะดูที่sshuttle
m33lky

9

ต้องการแมจากhostการโต้แย้งได้รับในบรรทัดคำสั่งเพื่อ ssh_config hostnameรายการเป็นเรื่องง่ายโดยใช้sshตัวเอง

คุณสามารถขอให้ประเมินและพิมพ์สิ่งที่จะใช้สำหรับการกำหนดค่าสำหรับบรรทัดคำสั่งโดยไม่ต้องเชื่อมต่อจริง จากนั้นคุณเพียงแค่ต้องดึงสิ่งที่มันแสดงรายการไว้hostname(โปรดสังเกตว่ามันตั้งชื่อตามชื่อคีย์การกำหนดค่าโดยการแปลงเป็นตัวพิมพ์เล็ก) ตัวอย่างง่ายๆคือ:

ssh -G database | awk '/^hostname / { print $2 }'

หาก. ssh / config ประกอบด้วย:

Host database
Hostname database.example.com

database.example.comนี้จะพิมพ์ออกมา

หากต้องการ ping คุณสามารถประเมินผลลัพธ์และใช้เป็นอาร์กิวเมนต์:

ping $(ssh -G database | awk '/^hostname / { print $2 }')

2
นั่นคือสิ่งที่ คำตอบที่ดี!
heisian


1

โดยปกติแล้วคุณสามารถทำได้host HostNameและคุณจะได้รับที่อยู่ IP

หากhostไม่ได้ติดตั้งไว้ (ควรเป็น) คุณสามารถใช้nslookup HostName 8.8.8.8ซึ่งจะใช้เซิร์ฟเวอร์ Google DNS เพื่อทำการค้นหา

ในการทำสิ่งเหล่านี้ตัวแก้ไขของเครื่องของคุณจะต้องมีการกำหนดค่าที่ถูกต้อง (ในไฟล์ /etc/resolv.conf และอาจ /etc/nsswitch.conf) หรือคุณต้องใช้ "ชื่อโดเมนแบบเต็ม" พร้อมโฮสต์ domaiin และ "TLD" (.org, .com, .net นั้นเป็นคำต่อท้าย)


3
นี่ไม่ได้ค้นหานามแฝงของโฮสต์~/.ssh/configซึ่งฉันเข้าใจว่าเป็นประเด็นของคำถามนี้
Gilles 'หยุดความชั่วร้าย'

ฮ่าฮ่าฉันเพิ่งสังเกตเห็นเช่นกัน ssh HostNameเป็นชื่อแทนโดยพลการไม่ใช่ชื่อโดเมน
m33lky

ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
terdon

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