هل من الممكن أن الأمام ssh الطلبات التي تأتي في أكثر من منفذ معين إلى جهاز آخر ؟

StackOverflow https://stackoverflow.com/questions/45230

  •  09-06-2019
  •  | 
  •  

سؤال

لدي الصغيرة الشبكة المحلية.واحد فقط من الآلات المتاحة إلى العالم الخارجي (هذه ليست قابلة للتغيير بسهولة).أود أن تكون قادرة على إعداد هذه ssh الطلبات التي لا تأتي على مستوى ميناء تذهب إلى جهاز آخر.هل هذا ممكن ؟ إذا كان الأمر كذلك ، كيف ؟

و كل هذه الأجهزة تعمل بنظام التشغيل أوبونتو أو OS X.

هل كانت مفيدة؟

المحلول

طريقة أخرى للذهاب استخدام ssh tunneling (الذي يحدث على جانب العميل).

كنت تفعل أحد الأوامر ssh مثل هذا:

ssh -L 8022:myinsideserver:22 paul@myoutsideserver

التي توصلك إلى آلة التي يمكن الوصول إليها من الخارج (myoutsideserver) ويخلق من خلال نفق ssh اتصال على المنفذ 22 (مستوى ميناء ssh) على ملقم التي يمكن الوصول إليها من الداخل.

ثم كنت تفعل شيئا آخر الأوامر ssh مثل هذا (ترك الأولى لا تزال متصلة):

ssh -p 8022 paul@localhost

هذا الصدد إلى ميناء 8022 على المضيف المحلي الخاص بك وسوف ثم الحصول على نفق خلال أول اتصال ssh تأخذك على myinsideserver.

قد يكون هناك شيء ما عليك القيام به على myoutsideserver للسماح الشحن من ميناء ssh.أنا نقرا مزدوجا التحقق من ذلك الآن.

تحرير

هممم.Ssh manpage يقول هذا:**فقط الخارق يمكن إعادة توجيه المنافذ مميزة.**

هذا النوع من يعني لي أن أول اتصال ssh يجب أن يكون الجذر.ربما شخص آخر يمكن توضيح ذلك.

يبدو الخارق امتيازات ليست مطلوبة طالما توجيه المنفذ (في هذه الحالة ، 8022) ليس متميز ميناء (مثل 22).شكرا على التوضيح مايك الحجر.

نصائح أخرى

(في هذا المثال ، وأنا على افتراض ميناء 2222 سوف تذهب إلى الداخلية المضيف.$externalip دولار internalip هي عناوين ip أو أسماء المضيفين مرئية و الجهاز الداخلية ، على التوالي.)

لديك زوجين من الخيارات اعتمادا على كيفية الدائم تريد إنشاء الوكلاء أن يكون:

  • نوع TCP الوكيل.على لينكس ، والفكرة الأساسية هي أن قبل واردة حزمة معالجة تريد تغيير وجهتها—أيprerouting الوجهة NAT:

    iptables -t nat -A PREROUTING -p tcp -i eth0 -d $externalip --dport 2222 --sport 1024:65535 -j DNAT --to $internalip:22

  • باستخدام SSH إقامة مؤقتة ميناء الشحن.من هنا لديك خياران مرة أخرى:

    • وكيل شفاف ، حيث العميل يعتقد أن ظاهر المضيف (على ميناء 2222) هو مجرد الطبيعي خادم SSH و لا يدرك أنه يمر.في حين تفقد بعض السيطرة غرامة الحبيبات ، يمكنك الحصول على الراحة (لا سيما إذا كنت ترغب في استخدام SSH إلى الأمام VNC أو X11 كل وسيلة الداخلية المضيف).

      • من الجهاز الداخلية: ssh -g -R 2222:localhost:22 $externalip
      • ثم عن العالم الخارجي: ssh -p 2222 $externalip

      لاحظ أن "الداخلية" و "الخارجية" آلات لا يجب أن تكون على نفس الشبكة المحلية.يمكنك الميناء إلى الأمام على طول الطريق حول العالم بهذه الطريقة.

    • مما اضطر الدخول إلى خارجي آلة الأولى.هذا صحيح "الشحن" و ليس "إنشاء الوكلاء";ولكن الفكرة الأساسية هي هذه:يمكنك إجبار الناس على الدخول في الخارجية آلة (حتى يمكنك التحكم في من يمكنه الدخول و عندما تحصل على سجلات النشاط) و من هناك يمكن أن SSH من خلال إلى الداخل.يبدو وكأنه عمل روتيني ، ولكن إذا إعداد بسيط البرامج النصية قذيفة الخارجي آلة مع أسماء الداخلية المضيفين ، إلى جانب كلمة المرور أقل SSH keypairs بين ثم هو بسيط جدا للمستخدم تسجيل الدخول.لذلك:

      • الخارجية آلة جعل بسيطة النصي ، /usr/local/bin/internalhost والتي ببساطة يعمل ssh $internalip
      • من العالم الخارجي ، المستخدمون: ssh $externalip internalhost وبمجرد تسجيل الدخول إلى الجهاز الأول ، فهي تحال فورا من خلال الداخلي.

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

لمعلوماتك, إذا كنت تريد أن SSH إلى خادم وأنت لا تريد أن تقلق حول مفاتيح, هل هذا

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

لدي اسم مستعار في بلدي شل يسمى "nossh" لذا يمكنني القيام به فقط nossh somehost وأنه سيتم تجاهل جميع الأخطاء.فقط نفهم أن كنت تجاهل المعلومات الأمنية عند القيام بذلك, حتى لا يكون هناك خطر نظري.

الكثير من هذه المعلومات من محاضرة قدمتها في بار كامب بانكوك عن الهوى SSH الحيل.يمكنك أن ترى بلدي الشرائح, ولكن أوصي نسخة نصية كما S5 الشرائح هي نوع من عربات التي تجرها الدواب.تحقق من قسم يسمى "إلى الأمام أي شيء:بسيطة ميناء الشحن" لمزيد من المعلومات.هناك أيضا معلومات بشأن إنشاء وكيل SOCKS5 مع بينسه.نعم ، يمكنك أن تفعل ذلك.OpenSSH رائع مثل هذا.

(أخيرا, إذا كنت تفعل الكثير من العبور إلى شبكة الاتصال الداخلية ، والنظر في إعداد VPN.يبدو مخيف لكن المسنجر هو بسيط جدا و يعمل على جميع انظمة التشغيل.وأود أن أقول انها مجرد مبالغة سة;ولكن بمجرد البدء في ميناء الشحن من خلال المنفذ الخاص بك-إلى الأمام للحصول على VNC, HTTP, أو غيرها من الأشياء يحدث.أو إذا كان لديك الكثير من الداخلية يستضيف يدعو للقلق ، يمكن أن يكون أكثر بساطة وأكثر للصيانة.)

@مارك بيك

كنت أريد أن أقول ذلك لكن كما سبقني إلى ذلك!على أي حال, أردت فقط أن أضيف أن هناك أيضا الخيار-R:

ssh -R 8022:myinsideserver:22 paul@myoutsideserver

الفرق هو ما الجهاز الذي تحاول الاتصال به/من.رئيسي أظهر لي هذه الخدعة منذ وقت ليس ببعيد, و هو بالتأكيد لطيفة حقا أن تعرف...كنا خلف جدار الحماية اللازمة لإعطاء الوصول الخارجي إلى آلة...حصل حوله من خلال ssh -R إلى جهاز آخر الذي تم الوصول...ثم الاتصالات أن الجهاز تم توجيهها إلى الجهاز خلف جدار الحماية, لذلك تحتاج إلى استخدام -R أو L على أساس الآلة التي كنت على و التي كنت ssh-إلى ing.

أيضا, أنا متأكد من أنك على ما يرام لاستخدام مستخدم عادي طالما ميناء كنت الشحن (في هذه الحالة 8022 ميناء) هو ليس أقل من محدودة النطاق (الذي أعتقد أنه هو 1024 لكن قد أكون مخطئا), لأن تلك هي "محفوظة" الموانئ.لا يهم أن كنت وإحالتها إلى "المحظورة" ميناء لأن هذا المنفذ لم يتم فتح (الجهاز فقط بعد المرور المرسلة إليها من خلال النفق ، فإنه لا يوجد لديه المعرفة النفق) ، 8022 ميناء كونها مفتوحة حتى يقتصر على هذا النحو.

تحرير:فقط تذكر النفق مفتوح فقط طالما الأولي ssh لا تزال مفتوحة ، حتى إذا كان مرة أو الخروج من ذلك النفق سوف تكون مغلقة.

يمكنك استخدام ميناء Fowarding للقيام بذلك.نلقي نظرة هنا:

http://portforward.com/help/portforwarding.htm

هناك تعليمات على كيفية إعداد جهاز التوجيه الخاص بك إلى الميناء إلى الأمام الطلب على هذه الصفحة:

http://www.portforward.com/english/routers/port_forwarding/routerindex.htm

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

على OS X يمكنك تحرير /etc/nat/natd.plist الملف لتمكين ميناء fowarding.

دون العبث مع قواعد جدار الحماية, يمكنك إعداد ~/.ssh/config.

نفترض 10.1.1.1 هو 'البوابة' النظام 10.1.1.2 هو 'العميل' system.

Host gateway
  Hostname 10.1.1.1 
  LocalForward 8022 10.1.1.2:22 

Host client
  Hostname localhost
  Port 8022

يمكنك فتح اتصال ssh إلى 'البوابة' عن طريق:

ssh gateway

في آخر المحطة ، فتح اتصال العميل.

ssh client
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top