আপনি যা খুঁজছেন তাকে বিপরীত সুড়ঙ্গ বলা হয়। সুইচ 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
সংযোগ পরীক্ষা করা হচ্ছে
আপনি দেখতে পাচ্ছেন যে বিপরীতমুখী টানেল নীচের মত কাজ করছে।
লগ ইন remotey
[user@lappy ~]$ ssh remotey
বিপরীত সুড়ঙ্গ বন্দর পরীক্ষা
[user@remotey ~]$ ssh -p 12345 localhost
এখন ফিরে আসতে হবে লম্পটে
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 পোর্টে সংযোগের জন্য।
সংযোগ পরীক্ষা করা (পার্ট ডিউক্স)
এখন আমাদের পরিবর্তিত সেটআপের সাথে যখন আমরা এটি পরীক্ষা করব। প্রাথমিক পার্থক্য হ'ল আমাদের আর লোকালহোস্টের সাথে সংযোগ করতে হবে না!
লগ ইন remotey
[user@lappy ~]$ ssh remotey
বিপরীত সংযোগ পরীক্ষা
[user@remotey ~]$ ssh -p 12345 remotey
এখন ফিরে আসতে হবে লম্পটে
root@remotey's password:
Last login: Wed Aug 21 01:49:10 2013 from remotey
[user@lappy ~]$
তথ্যসূত্র