Windows 10 1809 এবং Windows Server 2019-এ OpenSSH-ভিত্তিক একটি বিল্ট-ইন SSH সার্ভার যোগ করা হয়েছে। এই আর্টিকেলে আমরা দেখাব কীভাবে Windows 10-এ OpenSSH সার্ভার ইনস্টল ও কনফিগার করতে হয় এবং দূর থেকে সুরক্ষিত SSH প্রোটোকল ব্যবহার করে সংযোগ স্থাপন করতে হয় (Linux-এ যেভাবে হয় ঠিক তেমনি 🙂 )।
আপনি পূর্ববর্তী Windows ভার্সনগুলিতেও OpenSSH সার্ভার ইনস্টল করতে পারেন, কিন্তু আপনাকে ম্যানুয়ালি GitHub থেকে Win32-OpenSSH পোর্ট ডাউনলোড ও ইনস্টল করতে হবে (https://github.com/powershell/Win32-OpenSSH)। Win32-OpenSSH ইনস্টল ও কনফিগার করার উদাহরণ "How to Install & Configure SFTP Server (SSH FTP) on Windows?" আর্টিকেলে দেওয়া আছে।
বিষয়সূচি:
- Windows-এ OpenSSH সার্ভার ইনস্টল করার পদ্ধতি?
- Windows 10/Windows Server 2019-এ SSH সার্ভার কনফিগার করা
- OpenSSH সার্ভার কনফিগারেশন ফাইল (sshd_config)
- Windows 10-এ SSH দিয়ে সংযোগ করার পদ্ধতি?
Windows-এ OpenSSH সার্ভার ইনস্টল করার পদ্ধতি?
Windows 10 1903-এ OpenSSH Server ফিচার ইনস্টল করার পদ্ধতি দেখি (Windows Server 2019-এ প্রক্রিয়া একই)।
OpenSSH প্যাকেজ (RSAT-এর মতো) এই (এবং নতুনতর) Windows ভার্সনগুলিতে Feature on Demand (FoD) হিসেবে যোগ করা হয়েছে।
আপনার ডায়রেক্ট ইন্টারনেট অ্যাক্সেস থাকলে, আপনি PowerShell ব্যবহার করে OpenSSH ইনস্টল করতে পারেন:
Add-WindowsCapability -Online -Name OpenSSH.Server*
অথবা DISM ব্যবহার করে:
dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
আপনি Windows 10-এ Settings প্যানেল 통해서ও OpenSSH ইনস্টল করতে পারেন (Apps -> Apps&Features -> Manage optional features -> Add a feature)। লিস্টে Open SSH Server খুঁজে বের করুন এবং Install ক্লিক করুন।

OpenSSH সার্ভার ইনস্টল হয়েছে কিনা নিশ্চিত করতে কমান্ডটি চালান:
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'
State : Installed

Windows 10/Windows Server 2019-এ SSH সার্ভার কনফিগার করা
Windows-এ OpenSSH সার্ভার ইনস্টল করার পর, আপনাকে sshd সার্ভিসের স্টার্টআপ টাইপ অটোমেটিকに変更 করতে হবে এবং PowerShell ব্যবহার করে সার্ভিসটি শুরু করতে হবে:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd

netstat ব্যবহার করে নিশ্চিত করুন যে SSH সার্ভার চলছে এবং TCP পোর্ট 22-এ কানেকশনের জন্য অপেক্ষা করছে:
netstat -na| find ":22"

Windows Defender Firewall ইনবাউন্ড কানেকশন TCP পোর্ট 22-এ অনুমতি দেয় কিনা নিশ্চিত করুন:
Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled
Name DisplayName Description Enabled ---- ----------- ----------- ------- OpenSSH-Server-In-TCP OpenSSH SSH Server (sshd) Inbound rule for OpenSSH SSH Server (sshd) True

যদি রুলটি ডিজেবলড থাকে (Enabled=False) বা অনুপস্থিত থাকে, তবে New-NetFirewallRule ক্যাডলেট ব্যবহার করে একটি নতুন ইনবাউন্ড রুল তৈরি করতে পারেন:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
ডিফল্টভাবে, গুরুত্বপূর্ণ OpenSSH কম্পোনেন্টগুলো এই ফোল্ডারগুলিতে অবস্থিত:
- OpenSSH Server এক্সিকিউটেবল:
C:\Windows\System32\OpenSSH\ - sshd_config ফাইল (প্রথম সার্ভিস স্টার্টের পর তৈরি হয়):
C:\ProgramData\ssh - OpenSSH লগ:
C:\windows\system32\OpenSSH\logs\sshd.log - authorized_keys ফাইল এবং কীগুলো:
%USERPROFILE%\.ssh\
OpenSSH ইনস্টলেশনের পর, কম্পিউটারে একটি নতুন লোকাল ইউজার (sshd) তৈরি হয়।
OpenSSH সার্ভার কনফিগারেশন ফাইল (sshd_config)
আপনি কনফিগ ফাইলে আপনার OpenSSH সার্ভার সেটিংস পরিবর্তন করতে পারেন: %programdata%\ssh\sshd_config.
উদাহরণস্বরূপ, নির্দিষ্ট ডোমেন ইউজার অ্যাকাউন্ট (বা সকল ডোমেন ইউজার) এর জন্য SSH কানেকশন বাধা দিতে, ফাইলের শেষে এই ডিরেক্টিভগুলো যোগ করুন:
DenyUsers woshub\admin@192.168.1.10 DenyUsers corp\*
নির্দিষ্ট ডোমেন গ্রুপের জন্য শুধু SSH কানেকশন অনুমতি দিতে:
AllowGroups woshub\sshadmins
অথবা একটি লোকাল গ্রুপের জন্য অ্যাক্সেস অনুমতি দিতে:
AllowGroups sshadmins
অ্যাডমিনিস্ট্রেটর প্রিভিলেজযুক্ত অ্যাকাউন্টগুলোর অ্যাক্সেস বাধা দিতে পারেন। এই কেসে, আপনার SSH সেশনে কোনো প্রিভিলেজড অ্যাকশন করতে হলে আপনাকে runas ব্যবহার করতে হবে।
DenyGroups Administrators
নিচের ডিরেক্টিভগুলো RSA কী এবং পাসওয়ার্ড ব্যবহার করে SSH অ্যাক্সেস অনুমতি দেয় (পরবর্তী আর্টিকেলে RSA কী ব্যবহার করে Windows-এ SSH অ্যাক্সেস করার বিস্তারিত দেখানো হবে):
PubkeyAuthentication yes PasswordAuthentication yes
আপনি sshd_config ফাইলের Port ডিরেক্টিভে OpenSSH যে পোর্টে কানেকশন গ্রহণ করে সেটি পরিবর্তন করতে পারেন।

sshd_config ফাইলে যেকোনো পরিবর্তন করার পর, sshd সার্ভিস রিস্টার্ট করতে হবে:
restart-service sshd
Windows 10-এ SSH দিয়ে সংযোগ করার পদ্ধতি?
এখন আপনি আপনার Windows 10-এ SSH ক্লায়েন্ট দিয়ে সংযোগ করার চেষ্টা করতে পারেন (আমি PuTTY ব্যবহার করছি, কিন্তু আপনি বিল্ট-ইন Windows SSH ক্লায়েন্টও ব্যবহার করতে পারেন)।
প্রথম সংযোগের সময়,Известный SSH হোস্টের লিস্টে হোস্টটি যোগ করার স্ট্যান্ডার্ড রিকোয়েস্ট প্রদর্শিত হবে।

Yes ক্লিক করুন, এবং Windows ইউজার হিসেবে আপনার Windows 10-এ লগ অন করুন।

যদি SSH সংযোগ সফল হয়, cmd.exe শেল একটি প্রম্পট স্ট্রিংয়ের সাথে стар্ট হবে।
admin@win10pc C:\Users\admin>

আপনি কমান্ড প্রম্পটে বিভিন্ন কমান্ড, স্ক্রিপ্ট বা অ্যাপ রান করতে পারেন।

আমি PowerShell কনসোলে কাজ করা পছন্দ করি। এটি শুরু করতে এই কমান্ডটি চালান:
powershell.exe

OpenSSH-এর জন্য ডিফল্ট cmd.exe শেলকে PowerShell-এ পরিবর্তন করতে, নিচের PowerShell কমান্ড ব্যবহার করে রেজিস্ট্রিতে পরিবর্তন আনুন:
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String –Force

আপনার SSH সংযোগ রিস্টার্ট করুন এবং নিশ্চিত করুন যে PowerShell এখন ডিফল্ট SSH শেল হিসেবে ব্যবহার হচ্ছে (এটি PS C:\Users\admin> দ্বারা দেখানো হয়)।

আপনার SSH সেশনে PowerShell কনসোল শুরু হয়েছে, এবং পরিচিত ফিচারগুলোতে কাজ করে: ট্যাব অটোকমপ্লিশন, PSReadLine কালার হাইলাইটিং, কমান্ড ইতিহাস, ইত্যাদি। যদি বর্তমান ইউজার লোকাল অ্যাডমিনিস্ট্রেটর গ্রুপের সদস্য হয়, তবে UAC সক্রিয় থাকলেও সেশনের সকল কমান্ড ইলিভেটেড এক্সিকিউট হয়।