ProxyJump
ओपनएसएसएच 7.3 में नया:
A$ scp -oProxyJump=B thefile C:destination
(पर्दे के पीछे, यह सिर्फ प्रॉक्सीमेन्ड और का उपयोग करता है ssh -W
।)
ProxyCommand
शामिल करने के लिए अद्यतन -W अन्य उत्तरों से:
A$ scp -oProxyCommand="ssh -W %h:%p B" thefile C:destination
यदि A के पास बहुत पुराना SSH क्लाइंट स्थापित है ( -W
समर्थन के बिना ), या यदि B को TCP अग्रेषण को हटाने के लिए कॉन्फ़िगर किया गया है (लेकिन फिर भी शेल कमांड की अनुमति देता है), तो विकल्प का उपयोग करें:
A$ scp -oProxyCommand="ssh B socat stdio tcp:%h:%p" thefile C:destination
A$ scp -oProxyCommand="ssh B nc %h %p" thefile C:destination
पाइप्स
A$ tar cf - thefile anotherfile | ssh B "ssh C \"cd destination && tar xvf -\""
A$ (echo thefile; echo anotherfile) | cpio -o | ssh B "ssh C \"cd destination && cpio -i\""
केवल एक फ़ाइल के लिए:
A$ ssh B "ssh C \"cd destination && cat > thefile\"" < thefile
बी के माध्यम से "सुरंग"
A$ ssh -f -N -L 4567:C:22 B
(continues running in background)
A$ scp -P 4567 thefile localhost:destinationPath
जब आप कर लें, तो पहले से शुरू की गई ssh
प्रक्रिया को मारना न भूलें (जो कि पृष्ठभूमि के कारण गिरा है -f -N
)।
-f
कमांड निष्पादन से ठीक पहले पृष्ठभूमि पर जाने के लिए ssh अनुरोध करता है। यह उपयोगी है यदि ssh पासवर्ड या पासफ़्रेज़ माँगने जा रहा है, लेकिन उपयोगकर्ता इसे पृष्ठभूमि में चाहता है। इसका तात्पर्य है -n।
-N
रिमोट कमांड निष्पादित न करें। यह सिर्फ अग्रेषित बंदरगाहों के लिए उपयोगी है।
बी से ए के माध्यम से "सुरंग" को उल्टा करें
हालांकि हमेशा काम नहीं करता है:
A$ ssh -f -N -R 4567:localhost:22 B
(now you can reach A from B, by using localhost:4567)
B$ scp -P 4567 localhost:thefile C:destination
-R
निर्दिष्ट करता है कि दूरस्थ (सर्वर) होस्ट पर दिए गए टीसीपी पोर्ट या यूनिक्स सॉकेट के कनेक्शन स्थानीय होस्ट पर दिए गए होस्ट और पोर्ट या यूनिक्स सॉकेट के लिए भेजे जाने हैं।
A$ rsync <options> -e 'ssh B ssh' source C:destination