سؤال كيف يمكنني أن أنفق كل حركة مرور الشبكة من خلال SSH؟


عندما أستخدم الإنترنت من موقع غير آمن (مثل wifi العام) ، أحب استخدام نفق ssh (ssh -D port host) لضمان عدم استبعاد حركة المرور الخاصة بي. للأسف ، يبدو أن هناك العديد من التطبيقات التي لا توفر طريقة لتحديد الخادم الوكيل (فلاش هو أحد الأمثلة الرئيسية).

يبدو وكأنه يجب أن يكون هناك طريقة لاستخدام نفق الكل حركة مرور الشبكة من جهاز الكمبيوتر الخاص بي ، ولكن أنا جاهل تماما عن كيفية القيام بذلك. أي مساعدة سيكون موضع تقدير كبير.


108
2017-10-29 00:51


الأصل


وبالطبع لا يمكنك نفق كل حركة المرور الخاصة بك من خلال ssh ، لأن ذلك سيعني أنفاق ssh من خلال نفسها ، لكننا نعرف ما تقصده. :) - CarlF
هذه فكرة جيدة ولكنك محمي فقط بين جهاز الكمبيوتر ونقطة النهاية ssh الخاصة بك. بعد ذلك ، تكون حركة المرور الخاصة بك واضحة (ما لم تكن محمية بخلاف ذلك ، مثل SSL). من الأرجح أن يكون ذلك عبر سلك ، لكن لا يزال ... لا يمكنك أن تثق بالفعل في الأسلاك التي لا تتحكم بها. - quack quixote
لكن عندما تكون على شبكة الإنترنت الواسعة ، لديك بعض الأمان في كونك مجرد واحد من مليارات الحزم ، أليس كذلك؟ عندما تتصل بشبكة Wi-Fi عامة ، فأنت من بين ثلاث اتصالات ، يمكنك تحديد هويتك شخصياً ، إلخ. - endolith


الأجوبة:


لفعل ما تريد ، أوصي sshuttle.

أنت تستخدمها على هذا النحو:

./sshuttle -r username@sshserver 0.0.0.0/0 -vv

وسوف نفق تلقائيا كل حركة المرور الخاصة بك TCP. يمكنك إضافة --dns حجة ليكون ذلك نفق حركة مرور DNS الخاص بك كذلك. يحتاج الخادم البعيد فقط إلى تثبيت Python.

إذا كنت ترغب فقط في نفق برامج محددة أوصي proxychains.

بمجرد تثبيته ، قم بتشغيل بروكسي ssh مثل هذا:

ssh -fND 127.0.0.1:<local port> username@sshserver

سيؤدي ذلك إلى تشغيل وكيل "SOCKS" على <منفذ محلي>.

ثم قم بتحرير /etc/proxychains.conf للإشارة إلى نفس المنفذ مثل <المنفذ المحلي>.

وأخيرًا ، ابدأ تشغيل البرنامج الذي ترغب في إعداده بالوكالة مثل:

proxychains <program name>

يجب أن تعمل فقط. ومع ذلك ، ستواجه بعض البرامج صعوبة في العمل مع سلاسل Proxy. ضع في اعتبارك أيضًا أنه مع فايرفوكس ، يجب عليك تغيير عناصر إضافية ضمن: config لإجبارها على القيام بعمليات بحث DNS من خلال الوكيل بدلاً من تجاوزها.

كملاحظة إضافية ، على متصفحات الويب. إذا كانوا يدعمون بروكسيات الجوارب ، فإنك لا تحتاج إلى القيام بأي شيء إضافي لحملهم على استخدام نفق ssh المذكور أعلاه ، فقط أدخل 127.0.0.1 لخادم بروكسي SOCKS و <local port> لمنفذ البروكسي.

EDIT 3/29/16

نظرًا لأن هذه المشاركة لا تزال تشهد بعض الترقب ، فكرت في تحديثها. لا تزال Proxychains في معظم repos Linux ولا تزال تعمل على Linux. ومع ذلك ، يتم التخلي عن المشروع بشكل فعال ولا يعمل على OSX. بالنسبة إلى Linux أو OSX ، أوصي بشدة بالترقية إلى شوكة لا تزال محفوظة: proxychains-ng: https://github.com/rofl0r/proxychains-ng

إلى جانب العمل في كل من Linux و OSX ، من السهل تجميعها ، كما أن لديها دعم أفضل لنفق DNS.

يجب أن أذكر أيضًا خيارًا آخر ، وهو redsocks. وهو يعمل بالمثل مع proxychains (-ng) ومن المحتمل أيضًا في repo dist: https://github.com/darkk/redsocks


54
2018-05-23 16:08





man ssh يعطي مثالا على هذا بالضبط. على أساس سه فبن:

SSH-BASED VIRTUAL PRIVATE NETWORKS
     ssh contains support for Virtual Private Network (VPN) tunnelling using
     the tun(4) network pseudo-device, allowing two networks to be joined
     securely.  The sshd_config(5) configuration option PermitTunnel controls
     whether the server supports this, and at what level (layer 2 or 3 traf-
     fic).

     The following example would connect client network 10.0.50.0/24 with
     remote network 10.0.99.0/24, provided that the SSH server running on the
     gateway to the remote network, at 192.168.1.15, allows it:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252

~~ قصاصة ~~

     Since a SSH-based setup entails a fair amount of overhead, it may be more
     suited to temporary setups, such as for wireless VPNs.  More permanent
     VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).

وبمجرد الانتهاء من هذه الواجهة الجديدة ، سيكون عليك فقط جعلها المسار الافتراضي ، وهو سؤال مختلف.


44
2017-07-18 10:24



هل يمكن أن تفسر أكثر قليلا؟ يقوم الأمر ifconfig بإنشاء واجهات جديدة باسم tun0 ، أليس كذلك؟ أو هو tun0 التي أنشأتها سه وموجهة فقط من قبل ifconfig؟ ربما إضافة مثال ذو صلة بالسؤال؟ - Nobody


ابحث عن الخيار "Tunnel" في ssh. يؤدي ذلك إلى إنشاء جهاز نفق يمكنك تعيين عنوان IP إليه ، ثم تغيير المسار الافتراضي لاستخدام هذا النفق.


7
2017-11-01 17:40





لقد قمت بتطوير برنامج يسمح لك بإعادة توجيه كل TCP و UDP اختياريًا من خلال وكيل SOCKS5 ، على مستوى النظام.

http://code.google.com/p/badvpn/wiki/tun2socks

يمكن حتى تثبيته على جهاز توجيه لإعادة توجيه كافة الاتصالات من أجهزة الكمبيوتر على شبكة الاتصال المحلية.


4
2017-07-18 08:55





أردت فقط لتوضيح أن (ssh -D port host) ليست طريقة آمنة 100٪ لحركة المرور التي لا يمكن شمها. تعد إضافة (ssh -D -c hostfish port host) خيارًا أفضل لأنك على الأقل تضيف التشفير إلى جلستك. هناك المزيد من الخيارات التي يمكنك إضافتها ، ولكن من السهل الاكتفاء بكتابة "man ssh" في الجهاز أو Google للحصول على قائمة كاملة.

الخيار الذي أعتقد أنك تبحث عنه هو إعداد VPN (شبكة خاصة ظاهرية)

إلقاء نظرة على هذه المقالة للحصول على فهم الاختلاف بين الاثنين (SSH مقابل VPN) أو جيد نسخة ملخصة، قبل معالجة إعداد VPN الخاص بك. إذا قررت الذهاب إلى الطريق VPN أوصي المسنجر، حره والكثير من الوثائق والدعم.


-1
2017-10-29 01:43



نصيحة سيئة. "blowfish" هو تشفير SSH-1 ؛ إنه سريع ، آمن للأفكار (اعتبارًا من عام 1999: unixhelp.ed.ac.uk/CGI/man-cgi؟ssh+1 )، لكن مازال. ربما تريد ssh -2 -C -D [...] (قوة SSH2 ، استخدم الضغط) وإسقاط -c. وفقا لنظام بلدي man ssh قائمة التشفير في SSH2 افتراضية aes128-cbc,3des-cbc,blowfish-cbc,[etc]. وجهة نظري ، إذا طلبت -c blowfish قد ينتهي بك الأمر مع SSH1 ، وهو أقل أمانًا بكثير من SSH2. - quack quixote
صحيح ، ولكن كان جيريمي تحت الانطباع بأن الاتصال كان آمنًا مع -D8080 ، لقد ذكرت فقط أنه أفضل من ما كان يستخدمه. قمت بعمل نقطة صحيحة وهذا هو السبب في أنني أذكر دليل لمزيد من الخيارات. - ricbax
ربما يجب عليك تغيير إجابتك ، لأنها مفيدة خلاف ذلك. - endolith
نسيت سألت هذا ، لا تستخدم هذا الموقع بانتظام. شكرا على التوضيح ... كان لدي انطباع قوي بأن تأمين SSH كان آمنًا بشكل افتراضي. - Shareware
WTF لا تستخدم SSH باستخدام التشفير بشكل افتراضي؟ - LatinSuD


SSH-BASED VIRTUAL PRIVATE NETWORKS      ssh يحتوي على دعم لانفاق الشبكة الخاصة الافتراضية (VPN) باستخدام      (4) جهاز زائف الشبكة ، مما يتيح ربط شبكتين      بشكل آمن. خيار التكوين sshd_config (5) PermitTunnel      ما إذا كان الخادم يدعم هذا ، وعلى أي مستوى (طبقة 2 أو 3)      اللجنة المالية).

 The following example would connect client network 10.0.50.0/24 with
 remote network 10.0.99.0/24 using a point-to-point connection from
 10.1.1.1 to 10.1.1.2, provided that the SSH server running on the gateway
 to the remote network, at 192.168.1.15, allows it.

 On the client:

       # ssh -f -w 0:1 192.168.1.15 true
       # ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
       # route add 10.0.99.0/24 10.1.1.2

 On the server:

       # ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
       # route add 10.0.50.0/24 10.1.1.1

 Client access may be more finely tuned via the /root/.ssh/authorized_keys
 file (see below) and the PermitRootLogin server option.  The following
 entry would permit connections on tun(4) device 1 from user “jane” and on
 tun device 2 from user “john”, if PermitRootLogin is set to
 “forced-commands-only”:

   tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
   tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john

 Since an SSH-based setup entails a fair amount of overhead, it may be
 more suited to temporary setups, such as for wireless VPNs.  More perma‐
 nent VPNs are better provided by tools such as ipsecctl(8) and
 isakmpd(8).

-1
2018-03-12 22:57



الرجاء إضافة مصدر لمعلوماتك. ملاحظة: هذا سؤال قديم. - Lorenzo Von Matterhorn


استخدم هذه الأمثلة:

  • إعادة توجيه المنفذ 80 من مضيف بعيد إلى 8888 على المضيف المحلي

    ssh -fnN -L8888: localhost: 80 user @ server

    استخدم هذا للوصول إلى الخدمات الموجودة على مضيف بعيد تتوفر فقط هناك

  • إعادة توجيه المنفذ 80 من yourlocalhost إلى 8888 على مضيف بعيد

    ssh -fnN -R8888: localhost: 80 user @ server

    استخدم هذا للسماح للمستخدمين بالوصول إلى خدماتك: خادم الويب ، أو أيًا كان.

في صحتك! :)


-3
2017-11-01 17:47



تعليق جيد ، ولكن ليس على الإطلاق يتعلق بما نتحدث عنه هنا. يسمح ssh عكسي لـ SERVER أن تطلب من العميل مسار واحد من حركة المرور إليه. ستكون هناك حاجة إلى المزيد من التكوين لتوجيه ذلك المرور إلى الإنترنت. سيكون عليك أيضًا إعداد نفق SSH لكل منفذ. ويجب أن يبدأ من الخادم ، وليس العميل - ما هو السبب في أنك لم تفعل ذلك إلا إذا اضطررت لذلك؟ - Beachhouse