এসএসএস থেকে প্রাইভেট-আইপি


18

আমার সেন্টোস (কম্পিউটার এ) এর সাথে একটি কম্পিউটার রয়েছে যা একটি ব্যক্তিগত আইপি 10.150.5.141 হিসাবে কনফিগার করা হয়েছে (সীমাবদ্ধ ফায়ারওয়াল সহ), ইন্টারনেট এবং আমার আইআর লিনাক্স ভিপিএস (কম্পিউটার বি) রিয়েল আইপি wxyz সহ অ্যাক্সেস করতে পারে

আমি কীভাবে আরেকটি পিসি (কম্পিউটার সি) তৈরি করতে পারি যা কম্পিউটার এ এর ​​সাথে সংযোগ স্থাপনের জন্য কম্পিউটার বি অ্যাক্সেস করতে পারে তবে কম্পিউটার সি সরাসরি কম্পিউটার এ এর ​​সাথে সংযোগ করতে পারে না (কারণ এটি এ এর ​​নিজস্ব ব্যক্তিগত নেটওয়ার্কে রয়েছে)?

আমি জানি যে একটি টানেল স্থানীয় পোর্ট অন্য কম্পিউটারে খুলতে পারে: বন্দর, তবে কীভাবে বিপরীতটি করবেন?

আমি কম্পিউটার এ এর sshমাধ্যমে কম্পিউটার এ ব্যবহার করতে চাই তবে কম্পিউটার বি কম্পিউটার এ ব্যবহার করতে পারে না এ, কারণ কম্পিউটার এ এর ​​নেটওয়ার্ক সীমাবদ্ধ (বাইরে যেতে পারে, তবে ভিতরে যেতে পারে না, কারণ তাদের রাউটারে আমার অ্যাক্সেস নেই)

আমি এরকম কিছু চাই:

ssh -connect-to w.x.y.z:22 -open-port vvv -forward-to 10.150.5.141 -port 22

যাতে আমি যখন ssh w.x.y.z:vvvকম্পিউটার সি থেকে এটি ব্যক্তিগত নেটওয়ার্কে ফরোয়ার্ড করব 10.150.5.141:22

উত্তর:


14

আপনি যা খুঁজছেন তাকে বিপরীত সুড়ঙ্গ বলা হয়। সুইচ sshমাধ্যমে এটি সরবরাহ করে -R:

-R [bind_address:]port:host:hostport
       Specifies that the given port on the remote (server) host is to 
       be forwarded to the given host and port on the local side.  This 
       works by allocating a socket to listen to port on the remote side, 
       and whenever a connection is made to this port, the connection is
       forwarded over the secure channel, and a connection is made to host 
       port hostport from the local machine.

ওপি তাদের উত্তরের সাথে আবিষ্কার করে সিনট্যাক্সটি নিম্নরূপ:

$ ssh -f -N -R vvv:localhost:22 w.x.y.z

উদাহরণ

আমার নেটওয়ার্কে 2 টি কম্পিউটার রয়েছে lappyএবং remotey। সুতরাং আমি নিম্নলিখিত কমান্ডটি চালাচ্ছি lappy:

$ ssh -f -N -R 12345:localhost:22 remotey

আমি নিশ্চিত করতে পারি যে এটি কাজ করছে:

$ ps -eaf|grep "[l]ocalhost:22"
saml     27685     1  0 11:10 ?        00:00:00 ssh -f -N -R 12345:localhost:22 remotey

এখন আমি যদি sshআলাদাভাবে দূরবর্তী সিস্টেমে remoteyচলে যাই এবং এই কমান্ডটি চালনা করে দেখতে পাচ্ছি যে এটি এখন দূরবর্তী সিস্টেমের স্থানীয় ইন্টারফেসে 12345 বন্দরটিতে সংযোগ গ্রহণ করছে:

$ netstat -an|grep :12345
tcp        0      0 127.0.0.1:12345             0.0.0.0:*                   LISTEN      
tcp        0      0 ::1:12345                   :::*                        LISTEN      

সংযোগ পরীক্ষা করা হচ্ছে

আপনি দেখতে পাচ্ছেন যে বিপরীতমুখী টানেল নীচের মত কাজ করছে।

  1. লগ ইন remotey

    [user@lappy ~]$ ssh remotey
    
  2. বিপরীত সুড়ঙ্গ বন্দর পরীক্ষা

    [user@remotey ~]$ ssh -p 12345 localhost
    
  3. এখন ফিরে আসতে হবে লম্পটে

    user@localhost's password: 
    Last login: Thu Aug  1 17:53:54 2013
    /usr/bin/xauth:  creating new authority file /home/user/.Xauthority
    [user@lappy ~]$ 
    

লোকালহোস্ট ( lo) বাদে অন্য ইন্টারফেসে পোর্টস ?

আপনি যদি নিজের মতো করে কোনও কমান্ড চেষ্টা করেন এবং এটি কাজ করে না দেখায়, বা এটি সর্বদা লোকালহোস্ট ( lo) ইন্টারফেসের একটি বন্দরে আবদ্ধ থাকে তবে আপনার মাথা আঁচড়তে থাকবে ।

উদাহরণ স্বরূপ:

lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey

দ্রষ্টব্য: এই আদেশটি 12345 @ দূরবর্তী পোর্টটি খুলতে এবং 22 @ Lppy পোর্টে কোনও সংযোগ সুড়ঙ্গ করতে বলেছে।

তারপরে রিমোটিতে:

remotey$ netstat -an|grep 12345
tcp        0      0 127.0.0.1:12345              0.0.0.0:*                   LISTEN   

যা চলছে তা sshdএর কনফিগারেশনগুলি আপনাকে এটি করার অনুমতি দিচ্ছে না। বাস্তবে এই বৈশিষ্ট্যটি সক্ষম না করে ( GatewayPorts) আপনি sshলোকালহোস্ট ব্যতীত কোনও কোনও টানেল বন্দরকে বাঁধতে পারবেন না ।

গেটওয়েপোর্টগুলি সক্ষম করা

remotey$ grep GatewayPorts /etc/ssh/sshd_config
#GatewayPorts no

এটি সক্ষম করতে, এই ফাইলটি সম্পাদনা করুন /etc/ssh/sshd_config:

GatewayPorts clientspecified

এবং পুনরায় চালু করুন sshd:

remotey$ sudo service sshd restart

এখন আবার চেষ্টা করুন এবং আমাদের পরে থাকা প্রভাবটি দেখতে হবে:

lappy$ ssh -f -N -R remotey:12345:lappy:22 remotey

এবং এটি রিমোটে এবার ডাবল পরীক্ষা করুন:

remotey$ netstat -anp | grep 12345
tcp        0      0 192.168.1.3:12345           0.0.0.0:*                   LISTEN      9333/sshd

দ্রষ্টব্য: উপরের দিকে আমরা দেখতে পাচ্ছি যে sshdপ্রক্রিয়াটি এখন ইন্টারফেসে শুনছে যা আইপি অ্যাড্রেস 192.168.1.3 রয়েছে, 12345 পোর্টে সংযোগের জন্য।

সংযোগ পরীক্ষা করা (পার্ট ডিউক্স)

এখন আমাদের পরিবর্তিত সেটআপের সাথে যখন আমরা এটি পরীক্ষা করব। প্রাথমিক পার্থক্য হ'ল আমাদের আর লোকালহোস্টের সাথে সংযোগ করতে হবে না!

  1. লগ ইন remotey

    [user@lappy ~]$ ssh remotey
    
  2. বিপরীত সংযোগ পরীক্ষা

    [user@remotey ~]$ ssh -p 12345 remotey
    
  3. এখন ফিরে আসতে হবে লম্পটে

    root@remotey's password: 
    Last login: Wed Aug 21 01:49:10 2013 from remotey
    [user@lappy ~]$ 
    

তথ্যসূত্র


একই মেশিনে ০.০.০.০:1.২৩৩৩4646 থেকে ১২7.০.০.১.৩৩৩৩4545 পর্যন্ত সুড়ঙ্গ তৈরি করার কোনও উপায় আছে?
কোকিজু

1
@ কোকিজু - আমি এটি স্থাপনের চেষ্টা করেছি এবং আপনি যা চাইছেন তার উপর আমি অক্ষের চারপাশে জড়িয়ে যাচ্ছি। আমি এটি পেয়েছি যা আপনি যা চান তা শোনায়, anattatechnologies.com/q/2012/08/chaining-ssh-tunnels । আমি আজ রাতের পরে চেষ্টা করব এবং এটিকে কাজ করব, এটিকে নিয়ে খেলতে নির্দ্বিধায় এবং যদি আপনি এটি নিয়ে কোনও অগ্রগতি করেন তবে আমাকে জানান।
slm

এটাই আমার অর্থ নয়, আমি এটি ডাব্লিজিএইজে বাঁধতে চাই: কম্পিউটার কম্পিউটারে 127.0.0.1 এর পরিবর্তে vvv2, যাতে অন্যান্য লোকেরাও এটি ব্যবহার করতে পারে ..
কোকিজু

1
@ কোকিজু - আপডেট দেখুন।
slm

2

যেহেতু কম্পিউটার বি কম্পিউটার এ অ্যাক্সেস করতে পারে না, তাই আপনাকে প্রথমে কম্পিউটার এ থেকে একটি দূরবর্তী টানেলটি খুলতে হবে।

ssh user@computerB -R vvv:localhost:22

ধন্যবাদ, তবে এথ0 এর আইপিতে এমন কোনও পোর্ট খোলার কোনও উপায় আছে যা লোকালহোস্ট শোনার একটি পরিষেবাতে ফরোয়ার্ড করেছিল?
কোকিজু

1

কোন বিষয় নয়, আমি উত্তরটি পেয়েছি:

ssh -f -N -R vvv:localhost:22 w.x.y.z

কম্পিউটার থেকে এ

সম্পাদনা: টিএল; ডিআর, সঠিক সমাধান:

ssh -f -N -R w.x.y.z:vvv:localhost:22 w.x.y.z
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.