এই আর্টিকেলে আমরা দেখাবো কীভাবে বিল্ট-ইন Windows 10 OpenSSH সার্ভার ব্যবহার করে SSH টানেল মাধ্যমে পোর্ট ফরওয়ার্ড করা যায়। SSH পোর্ট ফরওয়ার্ডিং আপনাকে একটি লোকাল কম্পিউটার থেকে রিমোট সার্ভারে বা তার বিপরীতে অ্যাপ্লিকেশন পোর্ট টানেল (ফরওয়ার্ড) করতে দেয়। প্রায়শই SSH টানেলিং Linux/Unix পরিবেশে ব্যবহৃত হতো, কিন্তু আজकल এটি Windows 10/Windows Server 2016-এও ব্যবহার করা যায়। এখানে Windows-এ RDP কানেকশন SSH টানেল (TCP পোর্ট 22) Через ব্যবহার করার একটি কেস স্টাডি দেওয়া হলো।
SSH টানেলিং মূলত তখন ব্যবহৃত হয় যখন ফায়ারওয়ালের পেছনে থাকা একটি রিমোট কম্পিউটারের সাথে কানেক্ট করতে হয়। উদাহরণস্বরূপ, আপনার একটি Windows Server আছে যেখানে শুধু SSH পোর্ট খোলা (TCP 22)। বাকি সব পোর্ট হার্ডওয়ার ফায়ারওয়াল বা Windows Firewall দ্বারা ব্লক করা আছে। আপনার কাজ হলো RDP ক্লায়েন্ট ব্যবহার করে Windows Server-এ কানেক্ট করা। যেহেতু Remote Desktop পোর্ট 3389 ফায়ারওয়াল দ্বারা ব্লক করা আছে, সেটি অসম্ভব মনে হয়। কিন্তু আপনি SSH টানেলের মাধ্যমে পোর্ট ফরওয়ার্ডিং টেকনিক ব্যবহার করে এটি করতে পারেন।
SSH টানেলিং-এর نموذجিক ব্যবহারের সিনেরিওগুলো:
- Local TCP forwarding — লোকাল পোর্ট থেকে রিমোট সার্ভারে ফরওয়ার্ডিং;
- Remote TCP forwarding — রিমোট পোর্ট থেকে লোকাল কম্পিউটারে ফরওয়ার্ডিং;
- Double SSH tunnel — NAT-এর পেছনে থাকা কম্পিউটারগুলোকে কোনো ডেডিকেটেড পাবলিক IP ছাড়া SSH সার্ভারের মাধ্যমে সংযোগ করা (যদি OpenVPN সমাধান প্রয়োগ্য না হয়)।
SSH টানেল মাধ্যমে RDP অ্যাক্সেস (Local TCP Forwarding)
এই মোডে, আপনার কম্পিউটারে একটি লোকাল TCP পোর্ট তৈরি করা হয়। এই পোর্টে যেসব কানেকশন আসে সেগুলো SSH টানেলের মাধ্যমে রিমোট সার্ভারের নির্দিষ্ট পোর্টে ফরওয়ার্ড করা হয়। এই উদাহরণে, আমরা লোকাল পোর্ট 8888 তৈরি করব, এবং এর সাথে কানেকশন রিমোট Windows কম্পিউটারের RDP পোর্ট 3389-এ ফরওয়ার্ড হবে। সাধারণ কানেকশন স্কিম নিচে দেওয়া হলো।

বিল্ট-ইন Windows 10 SSH ক্লায়েন্ট ব্যবহার করে SSH টানেল তৈরি করতে (Windows 10 1809 এবং Windows Server 2019 থেকে Windows-এ অংশ), এই কমান্ডটি চালান:
ssh -L 8888:192.168.1.90:3389 root@192.168.1.90
SSH টানেল ব্যাকগ্রাউন্ডে চালানোর জন্য –f প্যারামিটার যোগ করুন।

SSH টানেলের মাধ্যমে রিমোট কম্পিউটারের ডেস্কটপে কানেক্ট করতে, আপনাকে আপনার কম্পিউটারের লোকাল পোর্ট 8888-এ RDP ক্লায়েন্ট (mstsc.exe) দিয়ে কানেক্ট করতে হবে:
127.0.0.1:8888

রিমোট কম্পিউটারে লগইন করুন এবং RDP সেশনেও নিরাপদে কাজ করুন (মনে রাখবেন পোর্ট 3389 ফায়ারওয়াল দ্বারা এখনও ব্লক করা আছে)। আপনি TCPView টুল ব্যবহার করে নিশ্চিত করতে পারেন যে RDP কানেকশন লোকাল (RDP কানেকশন লোকালি চলমান SSH সার্ভার দ্বারা আরম্ভ করা হয়েছে)।

মনে রাখবেন যে যদি আপনি আনক্রিপ্টেড অ্যাপ্লিকেশন ট্রাফিক ফরওয়ার্ড করেন, তবে সেটি পাবলিক নেটওয়ার্কের ওপর এনক্রিপ্টেডভাবে ট্রান্সমিট হবে। এমন ট্রাফিক আপনার SSH কানেকশনের এক প্রান্তে এনক্রিপ্ট হবে এবং অন্য প্রান্তে ডিক্রিপ্ট হবে।
আপনার লোকাল নেটওয়ার্কের অন্যান্য কম্পিউটারগুলোর এই মোড ব্যবহার করে RDP সার্ভারে কানেক্ট করতে পারে এমনকি যদি সরাসরি কানেকশন অনুমত নাও থাকে (SSH এবং RDP দুটোর জন্যও)। সেজন্য তাদের আপনার কম্পিউটারের (যেখানে SSH টানেল তৈরি করা হয়েছে) পোর্ট নম্বর 8888-এ RDP ক্লায়েন্ট দিয়ে কানেক্ট করতে হবে:
mstsc.exe /v 10.10.1.220:8888

রিমোট TCP ফরওয়ার্ডিং লোকাল কম্পিউটারে
SSH টানেলের আরেকটি ব্যবহারের কেস — রিমোট TCP ফরওয়ার্ডিং। SSH টানেল ব্যবহার করে আপনি রিমোট সার্ভারকে আপনার কম্পিউটারের একটি লোকাল পোর্ট বা আপনার লোকাল নেটওয়ার্কের অন্য কম্পিউটারের একটি পোর্ট অ্যাক্সেস করার অনুমতি দিতে পারেন। উদাহরণস্বরূপ, আপনি একটি এক্সটার্নাল সার্ভার (200.168.1.90) কে আপনার ইন্ট্রানেট সাইট (ইন্টারনেটে পাবলিশ না করা) অ্যাক্সেস করতে দিতে চান। রিভার্স SSH টানেল তৈরি করতে এই কমান্ডটি ব্যবহার করুন:
ssh -R 8080:internalwww:80 user@200.168.1.90
রিমোট SSH সার্ভার থেকে internalwwww সাইট অ্যাক্সেস করতে ব্রাউজারে এই ঠিকানাটি টাইপ করা যথেষ্ট: https://localhost:8080
সকল Windows ভার্সনে netsh interface portproxy command ব্যবহার করে পোর্ট ফরওয়ার্ডিং রুল তৈরি করা যায়।
SSH টানেল ব্যবহার করে পোর্ট ফরওয়ার্ডিং চেইন তৈরি করা যায়। OpenSSH কনফিগ ফাইলে (%programdata%\ssh\sshd_config) নিচের ডিরেক্টিভগুলো যোগ করে SSH টানেলিং সক্রিয় বা নিষ্ক্রিয় করা যায়:
AllowStreamLocalForwarding yes AllowTcpForwarding remote