−25%

Windows-এর বার্ষিক পেমেন্টে, ৩১ অক্টোবর পর্যন্ত। প্ল্যান দেখুন

EQVPS
শুরু করুন

Windows Server 2022-এ OpenSSH Server কীভাবে ইনস্টল করবেন (কী দিয়ে লগইন, PowerShell শেল)

Windows Server 2022 VPS-এ বিল্ট-ইন OpenSSH Server ইনস্টল করুন, PowerShell-কে ডিফল্ট শেল করুন, Administrator হিসেবে কী দিয়ে লগইন করুন এবং পাসওয়ার্ড লগইন বন্ধ করুন। সঙ্গে Windows-এর সেই দুটি ফাঁদ যার কারণে কী লগইন ব্যর্থ হয়।

Windows Server 2022-এ OpenSSH Server একটি ঐচ্ছিক ফিচার হিসেবে আসে: তৃতীয় পক্ষের ইনস্টলার নেই, আপডেট আসে Windows Update দিয়ে। চালু হলে আপনি SSH দিয়ে PowerShell চালাতে, scp দিয়ে ফাইল কপি করতে এবং স্ক্রিপ্ট বা CI-কে যেকোনো Linux মেশিনের মতো সার্ভারে লাগাতে পারেন।

নিচের সবকিছু আমরা আমাদের Windows Server 2022 ইমেজে, RDP দিয়ে খোলা অ্যাডমিন PowerShell-এ করেছি (কীভাবে সংযোগ করবেন)।

আগে নেটওয়ার্ক। NAT সহ Windows প্ল্যানে একমাত্র ইনবাউন্ড ফরওয়ার্ড RDP-তে যায়, তাই ইন্টারনেট থেকে SSH-এ পৌঁছানো যায় না। বাইরে থেকে SSH-এর জন্য নিজস্ব IPv4 সহ প্ল্যান দরকার, যেমন Windows Small-IP। পোর্টে পৌঁছানো গেলে নিচের ধাপগুলো প্রায় পাঁচ মিনিট নেয়।

1. OpenSSH Server ইনস্টল করুন

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

ক্লায়েন্ট আগে থেকেই ইনস্টল করা; সার্ভার যোগ না করা পর্যন্ত NotPresent দেখায়। আমাদের সার্ভারে ইনস্টল হতে 28 সেকেন্ড লেগেছে।

2. সার্ভিস চালু করুন এবং বুটে স্বয়ংক্রিয় চালু করুন

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*

ফিচারটি ইনস্টল করলে OpenSSH-Server-In-TCP ফায়ারওয়াল নিয়ম (পোর্ট 22, ইনবাউন্ড, অনুমোদিত) তৈরি হয়, তাই নিজে যোগ করতে হয় না।

3. PowerShell-কে ডিফল্ট শেল করুন

ডিফল্টভাবে SSH সেশন cmd.exe-তে খোলে। PowerShell-এ বদলান:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

নতুন সংযোগ সঙ্গে সঙ্গে PowerShell 5.1 পায়; রিস্টার্ট লাগে না।

4. Administrator-এর জন্য কী: যে ফাইলে সবাই হোঁচট খায়

এটি Windows-এর প্রথম ফাঁদ। Administrators গ্রুপের অ্যাকাউন্টের জন্য sshd C:\Users\<name>\.ssh\authorized_keys পড়ে না। এটি একটি সাধারণ ফাইল C:\ProgramData\ssh\administrators_authorized_keys পড়ে, তাও কেবল যদি Administrators ও SYSTEM ছাড়া কেউ তাতে লিখতে না পারে:

$pub = 'ssh-ed25519 AAAA...your-public-key... you@laptop'
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value $pub -Encoding ascii
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

-Encoding ascii-ও গুরুত্বপূর্ণ। আমাদের পরীক্ষায় একই কী Out-File (UTF-16, PowerShell 5.1-এর ডিফল্ট) দিয়ে সংরক্ষণ করলে Permission denied (publickey) দিয়ে প্রত্যাখ্যাত হয়েছে। আপনার মেশিন থেকে:

ssh Administrator@YOUR.SERVER.IP

পাসওয়ার্ড ছাড়াই PowerShell প্রম্পট পাওয়া উচিত। অ্যাডমিন নন এমন ব্যবহারকারীদের জন্য সাধারণ C:\Users\<name>\.ssh\authorized_keys কাজ করে।

5. পাসওয়ার্ড লগইন বন্ধ করুন: দ্বিতীয় ফাঁদ

সোজা পরিবর্তন PasswordAuthentication no এই সংস্করণে যথেষ্ট নয়। OpenSSH 8.1 এখনো keyboard-interactive দেয়, যা একই Windows পাসওয়ার্ড চায়। আমাদের পরীক্ষায় সেটিও বন্ধ না করা পর্যন্ত কী ছাড়া লগইন keyboard-interactive দেখাতে থাকে। তা ছাড়া সেটিংটি ফাইলের শেষে Match Group administrators ব্লকের আগে থাকতে হবে, নইলে এটি শুধু অ্যাডমিনদের ক্ষেত্রে খাটে। এই কমান্ড দুটি লাইনই একেবারে ওপরে বসায়:

$cfg = 'C:\ProgramData\ssh\sshd_config'
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^#?\s*(PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication)\s' }
Set-Content $cfg -Value (@('PasswordAuthentication no', 'ChallengeResponseAuthentication no') + $lines) -Encoding ascii
Restart-Service sshd

বর্তমান SSH সেশন খোলা রেখে দ্বিতীয় টার্মিনাল থেকে পরীক্ষা করুন। শুধু পাসওয়ার্ডের চেষ্টা এখন এটি পাওয়া উচিত:

Permission denied (publickey).

আমাদের পরীক্ষায় Administrator ও সাধারণ ব্যবহারকারী দুজনের ক্ষেত্রেই এই ফল এসেছে, আর কী দিয়ে লগইন চালু ছিল।

এ দিয়ে কী করতে পারেন

  • যেকোনো জায়গা থেকে কমান্ড চালান: ssh Administrator@IP 'Get-Service sshd'।
  • ফাইল কপি করুন: scp .\app.zip Administrator@IP:C:/apps/।
  • RDP-এর মতোই পোর্ট আপনার ঠিকানায় সীমিত করুন: Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10।

কোন প্ল্যান

বাইরে থেকে SSH-এর জন্য পাবলিক IPv4 লাগে: Windows Small-IP (4 vCPU, 4 GB, 50 GB) $28/মাস, Windows Medium-IP (6 vCPU, 6 GB) $36/মাস। Windows হলো আপনার নিজের লাইসেন্স সহ Server 2022 (BYOL ব্যাখ্যা)। চারটি প্ল্যানই Windows VPS পাতায়। সংযোগ বিচ্ছিন্নের পরেও প্রোগ্রাম চালু রাখতে দেখুন Windows Server-এ স্ক্রিপ্ট 24/7 চালান।

FAQ

RDP থাকতে Windows-এ SSH কেন?

স্ক্রিপ্ট ও টুল SSH-এ কথা বলে। সার্ভারে OpenSSH থাকলে আপনি Linux মেশিন বা CI জব থেকে PowerShell কমান্ড চালান, scp দিয়ে ফাইল কপি করেন এবং ডেস্কটপ সেশন ছাড়াই অটোমেশনকে সার্ভার সামলাতে দেন।

আমার কী সাধারণ ব্যবহারকারীর জন্য কাজ করে, Administrator-এর জন্য নয়। কেন?

Administrators গ্রুপের সদস্যদের জন্য Windows-এর OpenSSH ~/.ssh/authorized_keys উপেক্ষা করে এবং C:\ProgramData\ssh\administrators_authorized_keys পড়ে। সেই ফাইলে শুধু Administrators ও SYSTEM লিখতে পারবে, নইলে sshd চুপচাপ সেটি এড়িয়ে যায়।

NAT সহ Windows প্ল্যানে কি SSH-এ পৌঁছানো যায়?

বাইরে থেকে নয়। NAT সহ Windows প্ল্যানে ব্যক্তিগত বাইরের পোর্ট RDP (3389)-এ ফরওয়ার্ড করা, আর সেটিই একমাত্র ইনবাউন্ড ফরওয়ার্ড। ইন্টারনেট থেকে SSH-এর জন্য নিজস্ব IPv4 সহ Windows প্ল্যান নিন। সার্ভারের ভেতরে OpenSSH তবু স্থানীয় টুলের জন্য কাজ করে।

Windows Server 2022 OpenSSH-এর কোন সংস্করণ ইনস্টল করে?

OpenSSH 8.1p1 for Windows। তাই পাসওয়ার্ড সেটিংয়ে নতুন নাম KbdInteractiveAuthentication-এর বদলে ChallengeResponseAuthentication ব্যবহৃত হয়।

মন্তব্য

এখনো কোনো মন্তব্য নেই। প্রথম হোন।

একটি মন্তব্য দিন

মন্তব্য প্রকাশের আগে মডারেট করা হয়।