(এটি কিছু সংশোধন সহ @ xzfc এর উত্তর ))
ncatআপনার ক্লায়েন্ট এবং সার্ভার মেশিনে ইনস্টল করুন। কারণ ncসাধারণ বিতরণে (দেবিয়ান, উবুন্টু) আমাদের প্রয়োজন কমান্ড ( -c/ -e) সম্পাদন করার বিকল্প নেই ।
apt install nmap
আপনার স্থানীয় মেশিনে, এমন একটি সার্ভার সেট আপ করুন যা কোনও সংযোগ স্থাপনের পরে শব্দটি বাজানোর জন্য একটি কমান্ড কার্যকর করবে:
ncat --sh-exec "paplay /usr/share/sounds/freedesktop/stereo/complete.oga" \
--keep-open --listen localhost 10009
অথবা সমতুল্য শর্টহ্যান্ড কমান্ডটি ব্যবহার করুন:
ncat -klc "paplay file.oga" localhost 10009
আপনার দূরবর্তী হোস্টের মধ্যে এসএসএইচটি এমনভাবে করুন যাতে রিমোট হোস্টের পোর্ট 10008 থেকে আপনার স্থানীয় মেশিনে 10009 পোর্টে বিপরীত সুড়ঙ্গ স্থাপন করা হয় (যেখানে আপনার সার্ভারটি শুনছে):
ssh -R 10008:localhost:10009 me@somewhere.com
আপনার makeকমান্ডটি এসএসএইচ শেলের নীচে কার্যকর করুন:
make; ncat --idle-timeout 1s localhost 10008
কিভাবে এটা কাজ করে
makeকমান্ডের পরে (সফল হোক বা না) ncatকমান্ডটি রিমোট হোস্টে 10008 পোর্টের সাথে একটি সংযোগ স্থাপন করে, যা এসএসএইচ আপনার স্থানীয় মেশিনে 10009 পোর্টে ফরোয়ার্ড করে, যেখানে সংযোগটি তৈরি হওয়ার পরে আপনার সার্ভার শুনবে এবং একটি শব্দ বাজবে। সংযোগ স্থাপনের পরে, আমাদের আর এটির প্রয়োজন নেই, তাই এটি পরে বন্ধ হয়ে যায় --idle-timeout 1s। এটি "ঝুলন্ত" ncatকমান্ডের পরিবর্তে শেল প্রম্পটটি আবার দেখাবে , এটি আপনার এসএসএইচ কমান্ড চেইনটি সত্যিই শেষ হয়ে গেছে তা স্পষ্ট করে তুলবে ।
আপনার স্থানীয় মেশিন এবং রিমোট মেশিনের মধ্যে কোনও রাউটার / ফায়ারওয়াল / NAT সত্ত্বেও এসএসএইচের বিপরীত টানেলিংটি এই কাজটি করে। (অন্যথায় আপনাকে আপনার রাউটারে পোর্ট ফরওয়ার্ডিং বিধিগুলি সেট করতে হবে, বা একটি স্থানীয় মেশিন ইন্টারনেটের সংস্পর্শে থাকতে হবে))
নিরাপত্তা
আমরা ncat -l localhost 10009সার্ভারের জন্য করি, যার অর্থ এটি কেবল স্থানীয় ইন্টারফেসে লোকালহোস্ট আইপি অ্যাড্রেসের সাথে শোনা। এই স্থানীয় লুপ ইন্টারফেসটি কেবলমাত্র আপনার নিজের মেশিন থেকে সংযোগের অনুমতি দেয় (এই ক্ষেত্রে, এসএসএইচ-এর মাধ্যমে বিপরীত হওয়া এইগুলি সহ)। সুতরাং আপনি ফায়ারওয়ালের পিছনে না থাকলেও আপনার পোর্ট 10009 ইন্টারনেটে কারও কাছে উন্মুক্ত করা হয়নি।