डॉकर कंटेनरों के अंदर रिमोट पोर्ट अग्रेषण

मैं एक डॉकर कंटेनर को सेटअप करने की कोशिश कर रहा हूं जिसका उपयोग मैं फायरवॉल/एनएटी को बायपास करने के लिए करता हूं ताकि इन रूटिंग बाधाओं के पीछे कंप्यूटर तक एसएसएच पहुंच की अनुमति मिल सके । संक्षेप में, मेरे पास एक डॉकटर कंटेनर के अंदर एक एसएसएच सेवा है, जो मेरे अन्य कंप्यूटरों से कनेक्ट होती है, एक रिवर्स-एसएसएच पोर्ट अग्रेषण खोलती है, और फिर अगर मैं फ़ायरवॉल के पीछे एक कंप्यूटर से कनेक्ट करना चाहता हूं, तो मैं इसके बजाय कनेक्ट करता हूं रिवर्स पोर्ट पर मेरा डॉकराइज्ड प्रॉक्सी सर्वर । उदाहरण:

फायरवॉल कंप्यूटर" बॉब " प्रॉक्सी सर्वर से जुड़ता है:

ssh -R 2024:localhost:22 -N remote.server

अगला, मैं पोर्ट पर रिमोट सर्वर से कनेक्ट करता हूं 2024 ताकि सुरंग का अनुसरण नीचे किया जा सके और कनेक्ट किया जा सके localhost:22 बॉब पर:

ssh -p 2024 remote.server

यह सब बहुत अच्छा काम करता है जब यह डॉकराइज्ड नहीं होता है, हालांकि जब मैंने इसे डॉकराइज्ड सेवा में ले जाने की कोशिश की, तो मैंने पाया कि मेरा sshd डॉकर कंटेनर के भीतर सर्वर रिमोट पोर्ट को आगे खोलने से इनकार करता है । के साथ जुड़ना ssh -vvv ऊपर दिए गए पहले चरण में देता है:

...debug1: Entering interactive session.debug1: pledge: networkdebug3: receive packet: type 4debug1: Remote: Server has disabled port forwarding.debug3: receive packet: type 82debug1: remote forward failure for: listen 2024, connect localhost:22Warning: remote port forwarding failed for listen port 2024debug1: All remote forwarding requests processed

जो मेरी तरह एक बहुत लगता है sshd दूरस्थ पोर्ट अग्रेषण की अनुमति देने के लिए सेटअप नहीं है । हालांकि, मेरे sshd_config लगता है कि यह है:

# tail /etc/ssh/sshd_config -n 5GatewayPorts yesAllowTcpForwarding yesAllowStreamLocalForwarding yesPermitTunnel yesUsePrivilegeSeparation no

दरअसल, साथ चल रहा है ssh -ddd डॉकर कंटेनर के अंदर, फिर ऊपर की रेखा से जुड़ना पहले दिखाता है:

debug3: /etc/ssh/sshd_config:91 setting GatewayPorts yesdebug3: /etc/ssh/sshd_config:92 setting AllowTcpForwarding yesdebug3: /etc/ssh/sshd_config:93 setting AllowStreamLocalForwarding yesdebug3: /etc/ssh/sshd_config:94 setting PermitTunnel yesdebug3: /etc/ssh/sshd_config:95 setting UsePrivilegeSeparation no

इसके बाद:

debug1: server_input_global_request: rtype tcpip-forward want_reply 1debug1: server_input_global_request: tcpip-forward listen localhost port 2024debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0

तो स्पष्ट रूप से मेरा कॉन्फ़िगरेशन सही ढंग से सेट किया जा रहा है, लेकिन ऐसा लगता है कि क्लाइंट अभी भी सोचता है कि सर्वर पोर्ट फ़ॉरवर्डिंग नहीं कर सकता है । मैं ओपनएसएसएच सर्वर को दूरस्थ अग्रेषण करने के लिए कैसे मना सकता हूं? इस विफलता का क्या कारण हो सकता है?

ग्राहक चल रहा है OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, सर्वर चल रहा है OpenSSH_6.7p1 Debian-5+deb8u4, डॉकर संस्करण है 17.09.1-ce पर Amazon Linux 2017.09.

धन्यवाद!

अहा! मैंने इसका पता लगा लिया । ऐसा इसलिए था क्योंकि docker एक बना रहा था ipv6 मेरे कंटेनरों के लिए आंतरिक नेटवर्क, और मेरे कर्नेल में नहीं था ipv6 अग्रेषण सक्षम। तो जब चल रहा है sshd कंटेनर के बाहर, यह काम करेगा ipv4, लेकिन जब चल रहा है sshd डॉकर ब्रिज नेटवर्क पर कंटेनर के अंदर, यह सुनेगा ipv6 और आगे पोर्ट खोलने में असमर्थ हो ।

एक बार जब मैंने सक्षम किया ipv6 अग्रेषण, (जोड़ना net.ipv6.conf.all.forwarding = 1 में /etc/sysctl.conf और रिबूट करना) सब कुछ ठीक काम करना शुरू कर रहा है ।

आप एसएसएचडी को आईपीवी 4 का उपयोग करने के लिए मजबूर करने का भी प्रयास कर सकते हैं । आपके उदाहरण में, स्विच "-4" जोड़ना निम्नानुसार है:

ssh -4 -R 2024:localhost:22 -N remote.server

इस कदम का पालन करने से मुझे मदद मिली

  • स्थापित करें ssh कंटेनर पर
  • के साथ सेवा सक्षम करें /etc/init.d/ssh start
  • भागो echo 'root:a-strong-password' | chpasswd रूट के लिए पासवर्ड सेट करने के लिए
  • संपादित करें /आदि/ssh/sshd_config और सेट करें PermitRootLogin yes
  • फिर /etc/init.d/ssh restart
  • फिर ssh -fNTCR localhost:<YOUR-PORT>:localhost:22 remote-host यह बैकग्राउंड में जाता है और आप इसे इसके माध्यम से देख सकते हैं ps aux | grep ssh
  • फिर में रिमोट-होस्ट हम इसमें लॉगिन कर सकते हैं ssh -p <YOUR-PORT> localhost
  • जो मांगता है पासवर्ड और आपने पहले ही बनाया है

screenhost

enter image description here


अधिक जानकारी

  1. कैसे-से-एसएसएच-इन-ए-डॉकर-कंटेनर-दूरस्थ रूप से-के रूप में-रूट-या-ए-गैर-रूट-उपयोगकर्ता