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 چلائیں۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔