क्या 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। वहाँ एक कारण है कि आप विन्यास में परिभाषित उपनामों द्वारा एसपीपी नहीं कर सकते हैं?