क्या ssh_config का ProxyCommand रिमोट मशीन से कनेक्ट करने से पहले एक स्थानीय कमांड चला सकता है?


11

इससे पहले कि मैं किसी विशेष रिमोट मशीन से जुड़ सकूं मुझे एक निश्चित स्थानीय कमांड को चलाना होगा। इसलिए इसके बदले ssh me@remote.machineमुझे करना होगा

local_command
ssh me@remote.machine

मैं इसे स्वचालित करना चाहूंगा ताकि मुझे केवल करना पड़े ssh remote.machine

मुझे पता है कि मैं अपनी खुद की sshस्क्रिप्ट बनाने के लिए शेल स्तर पर इसे प्राप्त /usr/bin/sshकर सकता हूं, लेकिन क्या मैं ProxyCommur विकल्प का उपयोग कर सकता हूं ssh_config?

जहां तक ​​मैं इसे समझता हूं, मुझे कुछ ऐसा चाहिए

Host remote.machine
    ProxyCommand local_command; ssh me@remote.machine

मेरी ~/.ssh/configफ़ाइल में, लेकिन बिल्कुल नहीं है क्योंकि यह परिपत्र है!

जवाबों:


9

यदि उपयोग करते हैं ProxyCommand, तो आपको /usr/bin/ncसर्वर से कनेक्ट करने के लिए कुछ का उपयोग करना चाहिए ।

कनेक्ट करने से पहले अपनी कमांड को लागू करने के लिए, आपको sh -c "command list"दो कमांड्स को एक में मर्ज करने के लिए उपयोग करने की आवश्यकता है।

Host remote.machine
    ProxyCommand sh -c "local_command; /usr/bin/nc %h %p"

अधिक:

यदि आपकी local_commandस्थिति बहुत जटिल है, तो आप एक स्क्रिप्ट का उपयोग कर सकते हैं:

cat my_connect.sh
#!/bin/bash

local_command
/usr/bin/nc "$1" "$2"

Ssh config हो जाता है:

Host remote.machine
        ProxyCommand /path_to_my_connect.sh %h %p

आखिरी में, आप अपने खुद के प्रॉक्सी को जोड़ सकते हैं /usr/bin/nc


1

आपके द्वारा लिंक किए गए पृष्ठ से उदाहरण का उपयोग करें:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.1:8080 %h %p

एक प्रॉक्सी से कनेक्ट करने के लिए nc (netcat) को आमंत्रित करता है (प्रॉक्सी 192.0.2.1:8080 पर चल रहा है) और ssh कमांड को% h और% p पास करता है (% h = hostname,% p = port)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.