ميناء الشحن عن بعد داخل حاويات عامل الميناء

أحاول إعداد حاوية عامل الميناء التي أستخدمها لتجاوز الجدران النارية / نات للسماح بالوصول سش إلى أجهزة الكمبيوتر وراء هذه الحواجز التوجيه. في جوهرها ، لدي خدمة سش الاستماع داخل حاوية عامل الميناء ، أن أجهزة الكمبيوتر الأخرى الاتصال ، وفتح عكس سش ميناء الشحن ، ومن ثم إذا كنت ترغب في الاتصال بجهاز كمبيوتر وراء جدار الحماية ، وأنا بدلا من ذلك الاتصال بخادم وكيل دوكيريزد على المنفذ العكسي. مثال:

الكمبيوتر جدار ناري "بوب" يتصل الخادم الوكيل:

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 لتعيين كلمة المرور للجذر
  • تحرير / الخ / سه / سشد_كونفيغ وتعيين 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
  • الذي يسأل عن كلمة المرور وقمت بالفعل بإنشاء

سكرينهوست

enter image description here


مزيد من المعلومات

  1. كيف إلى سه في واحد في عامل الميناء الحاويات عن بعد كما هو الجذر أو واحد في غير الجذر المستخدم