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?" लेख में दिया गया है।
Contents:
- Windows पर OpenSSH सर्वर कैसे इंस्टॉल करें?
- Windows 10/Windows Server 2019 पर SSH सर्वर कॉन्फ़िगर करें
- OpenSSH सर्वर कॉन्फिगरेशन फ़ाइल (sshd_config)
- SSH के माध्यम से Windows 10 से कैसे कनेक्ट करें?
Windows पर OpenSSH सर्वर कैसे इंस्टॉल करें?
आइए देखें कि Windows 10 1903 पर OpenSSH सर्वर फीचर कैसे इंस्टॉल करें (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 सर्वर इंस्टॉल करने के बाद, आपको PowerShell का उपयोग करके sshd सर्विस स्टार्टअप प्रकार को ऑटोमैटिक में बदलना होगा और सर्विस शुरू करनी होगी:
Set-Service -Name sshd -StartupType 'Automatic'
Start-Service sshd
netstat का उपयोग करके, सुनिश्चित करें कि SSH सर्वर चल रहा है और TCP पोर्ट 22 पर कनेक्शन की प्रतीक्षा कर रहा है:
netstat -na| find ":22"

सुनिश्चित करें कि Windows Defender Firewall TCP पोर्ट 22 के माध्यम से Windows पर इनबाउंड कनेक्शन की अनुमति देता है:
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 cmdlet का उपयोग करके एक नया इनबाउंड नियम बना सकते हैं:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
डिफ़ॉल्ट रूप से, महत्वपूर्ण OpenSSH घटक इन फ़ोल्डर्स में स्थित हैं:
- OpenSSH सर्वर एक्जीक्यूटेबल्स:
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 एक्सेस की अनुमति देते हैं (हम अगले लेख में विस्तार से देखेंगे कि Windows के माध्यम से SSH से एक्सेस करने के लिए RSA कुंजियों का उपयोग कैसे करें):
PubkeyAuthentication yes PasswordAuthentication yes
आप sshd_config फ़ाइल के Port निर्देश में OpenSSH द्वारा कनेक्शन प्राप्त करने के लिए पोर्ट बदल सकते हैं।
sshd_config फ़ाइल में कोई भी परिवर्तन करने के बाद, आपको sshd सर्विस को रीस्टार्ट करना होगा:
restart-service sshd
SSH के माध्यम से Windows 10 से कैसे कनेक्ट करें?
अब आप SSH क्लाइंट (मैं PuTTY उपयोग कर रहा हूं, लेकिन आप बिल्ट-इन Windows SSH क्लाइंट का भी उपयोग कर सकते हैं) के माध्यम से अपने Windows 10 से कनेक्ट करने का प्रयास कर सकते हैं।
पहले कनेक्शन पर, ज्ञात 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> द्वारा दिखाया गया है)।
PowerShell कंसोल आपके SSH सत्र में शुरू हो गया है, और परिचित विशेषताएं इसमें काम करती हैं: टैब ऑटोकंप्लीशन, PSReadLine कलर हाइलाइटिंग, कमांड हिस्ट्री, आदि। यदि वर्तमान यूजर स्थानीय एडमिनिस्ट्रेटर ग्रुप का सदस्य है, तो UAC सक्षम होने पर भी सभी सत्र कमांड एलिवेटेड निष्पादित होते हैं।