क्या HostName
कमांड लाइन पर ssh कॉन्फिग से IP को पुनः प्राप्त करने का एक सरल तरीका है ? कई बार मुझे इस्तेमाल scp
करना पड़ता है और मैं एक मशीन से जुड़ना चाहता हूं, लेकिन मुझे केवल HostName ही याद है।
क्या HostName
कमांड लाइन पर ssh कॉन्फिग से IP को पुनः प्राप्त करने का एक सरल तरीका है ? कई बार मुझे इस्तेमाल scp
करना पड़ता है और मैं एक मशीन से जुड़ना चाहता हूं, लेकिन मुझे केवल HostName ही याद है।
जवाबों:
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/
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 }')
इसके लिए ऐसा करने की कोई आवश्यकता नहीं हैscp
, लेकिन आप ssh
डीबगिंग निशान का उपयोग कर सकते हैं ।
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
आमतौर पर, आप कर सकते हैं host HostName
और आपको आईपी पता मिलेगा।
यदि host
यह स्थापित नहीं है (यह होना चाहिए), आप उपयोग कर सकते हैं nslookup HostName 8.8.8.8
जो Google DNS सर्वर का उपयोग लुकअप करने के लिए करेगा।
इन कामों को करने के लिए, या तो आपके मशीन के रिजॉल्वर के पास एक सही कॉन्फिगर होना चाहिए (फाइल /etc/resolv.conf और शायद /etc/nsswitch.conf में) या आपको "पूरी तरह से योग्य डोमेन नाम" का उपयोग करना होगा, मेजबान के साथ पूरा करना होगा। डोमिनिन, और "TLD" (.org, .com, .net यह प्रत्यय का प्रकार)।
~/.ssh/config
, जिसे मैं इस प्रश्न का बिंदु समझता हूं।
HostName
एक मनमाना उपनाम है, डोमेन नाम नहीं है।
एक फर्जी प्रॉक्सी का इस्तेमाल करें ...
$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id | read actual
$ echo $actual
192.168.1.234
.ssh/config
और पढ़ेगा/etc/ssh/ssh_config
। वहाँ एक कारण है कि आप विन्यास में परिभाषित उपनामों द्वारा एसपीपी नहीं कर सकते हैं?