कैसे एक ssh HostName का आईपी पता लगाने के लिए


10

क्या HostNameकमांड लाइन पर ssh कॉन्फिग से IP को पुनः प्राप्त करने का एक सरल तरीका है ? कई बार मुझे इस्तेमाल scpकरना पड़ता है और मैं एक मशीन से जुड़ना चाहता हूं, लेकिन मुझे केवल HostName ही याद है।


1
scp आपकी .ssh/configऔर पढ़ेगा /etc/ssh/ssh_config। वहाँ एक कारण है कि आप विन्यास में परिभाषित उपनामों द्वारा एसपीपी नहीं कर सकते हैं?
टिम कैनेडी

आपको इसे उत्तर के रूप में जोड़ना चाहिए। मुझे लगता है कि जब मैंने इसे पहली बार आजमाया था, तो मैंने कुंजी या कुछ और प्रदान नहीं किया था, इसलिए यह मेजबान को पहचान नहीं पाया।
m33lky

एक उत्तर के लिए थोड़ा हल्का लग रहा था, लेकिन मैंने इसे जोड़ा। साथ मैं कुछ दिलचस्प ssh config संबंधित पठन को क्या मानता हूँ।
टिम केनेडी

जवाबों:


2

scp आपकी ~/.ssh/configऔर पढ़ेगा /etc/ssh/ssh_config। जब तक आप अपने ssh config में होस्ट एलियास में से किसी एक के नाम से / को scp / करते हैं, उसे काम करना चाहिए।

चूँकि ऐसा लगता है कि उत्तर की तरह छोटा है, यहाँ उन चीजों के साथ कुछ और जानकारी है जो आप अपने ssh config के साथ कर सकते हैं ...

यहाँ एक पोस्ट है जो ssh config फाइल की कुछ उन्नत विशेषताओं का वर्णन करता है: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-no घटिया-वीपीएन-सॉफ्टवेयर /

एक HTTP प्रॉक्सी के माध्यम से ssh / scp को टनल बनाने की आवश्यकता है? कोई समस्या नहीं, बस यहां बताए गए चरणों का उपयोग करें: http://www.mtu.net/~engstrom/ssh-proxy.php

ProxyCommand विकल्प का एक और उपयोग: http://jasonmc.wordpress.com/2008/04/16/ssh-name/


1
शॉर्ट टू-पॉइंट पॉइंट शानदार हैं। अन्यथा ऑफ-टॉपिक जाना आसान है। सुरंग बनाने वाले किसी भी व्यक्ति को सूक्ष्म रूप से देखना चाहिए ।
m33lky 21

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 $(ssh -G database | awk '/^hostname / { print $2 }')

2
यह सब है। बहुत बढ़िया जवाब!
20


1

आमतौर पर, आप कर सकते हैं host HostNameऔर आपको आईपी पता मिलेगा।

यदि hostयह स्थापित नहीं है (यह होना चाहिए), आप उपयोग कर सकते हैं nslookup HostName 8.8.8.8जो Google DNS सर्वर का उपयोग लुकअप करने के लिए करेगा।

इन कामों को करने के लिए, या तो आपके मशीन के रिजॉल्वर के पास एक सही कॉन्फिगर होना चाहिए (फाइल /etc/resolv.conf और शायद /etc/nsswitch.conf में) या आपको "पूरी तरह से योग्य डोमेन नाम" का उपयोग करना होगा, मेजबान के साथ पूरा करना होगा। डोमिनिन, और "TLD" (.org, .com, .net यह प्रत्यय का प्रकार)।


3
यह मेजबान उपनाम को नहीं देखता है ~/.ssh/config, जिसे मैं इस प्रश्न का बिंदु समझता हूं।
गाइल्स का SO- बुराई पर रोक '22

हाहा, मैंने बस उस पर भी ध्यान दिया। ssh's HostNameएक मनमाना उपनाम है, डोमेन नाम नहीं है।
1:33 पर m33lky

टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
terdon

0

एक फर्जी प्रॉक्सी का इस्तेमाल करें ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.