كنت دائمًا مكتئبًا بسبب الاتصال بأجهزة Windows. لا ، أنا لست معارضا أو مؤيدا لمايكروسوفت ومنتجاتها. كل منتج موجود لغرضه ، ولكن هذا ليس عن ذلك.
لقد كان الأمر مؤلمًا دائمًا بالنسبة لي للاتصال بخوادم Windows ، لأن هذه الاتصالات إما تم تكوينها من خلال مكان واحد (مرحبًا WinRM مع HTTPS) أو لا تعمل بثبات شديد (مرحبًا RDP إلى الأجهزة الافتراضية في الخارج).
لذلك ، تعثرت بطريق الخطأ على مشروع
Win32-OpenSSH ، قررت لتبادل تجربة التكوين. ربما شخص ما هذه الأداة حفظ مجموعة من الأعصاب.

خيارات التثبيت:
- يدويا
- عن طريق حزمة الشوكولاتة
- عبر Ansible ، على سبيل المثال دور jborean93.win_openssh
بعد ذلك ، سأتحدث عن النقطة الأولى ، كما هو الحال مع البقية ، وبالتالي فإن كل شيء أكثر أوضح.
ألاحظ أن هذا المشروع لا يزال في مرحلة تجريبية ، لذلك لا يوصى باستخدامه في الإنتاج.
لذلك ، قم بتنزيل أحدث إصدار ، حاليًا هو
7.9.0.0p1-beta . هناك إصدارات لكل من أنظمة 32 و 64 بت.
فك في
C: \ ملفات البرنامج \ OpenSSHاللحظة الإلزامية للعمل الصحيح: يجب أن يكون لدى
SYSTEM ومجموعة المسؤول أذونات الكتابة فقط في هذا الدليل.
قم بتثبيت الخدمات باستخدام
البرنامج النصي install-sshd.ps1 الموجود في هذا الدليل
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
السماح بالاتصالات الواردة إلى المنفذ 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
توضيح:
يتم استخدام
التطبيق الصغير New-NetFirewallRule على Windows Server 2012 والإصدارات الأحدث. في أقدم النظم (أو سطح المكتب) ، يمكنك استخدام الأمر:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
نبدأ الخدمة:
net start sshd
عند بدء التشغيل ، سيتم إنشاء مفاتيح المضيف (في حالة
فقدها ) تلقائيًا في
٪ programdata٪ \ sshتشغيل تلقائي للخدمة عند بدء تشغيل النظام يمكننا تمكين مع الأمر:
Set-Service sshd -StartupType Automatic
أيضا ، يمكنك تغيير shell الافتراضي (بعد التثبيت ، الافتراضي هو
cmd ):
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
المواصفات: يجب تحديد مسار مطلق.
ما التالي؟
ثم قم بتكوين
sshd_config ، والذي
سنضعه في
C: \ ProgramData \ ssh . على سبيل المثال:
PasswordAuthentication no PubkeyAuthentication yes
وقم بإنشاء دليل
.ssh في مجلد المستخدم ،
وفيه ملف
Author_keys . نكتب المفاتيح العامة هناك.
توضيح مهم: يجب أن يكون لدى المستخدم في ملفه الدليل فقط أذونات الكتابة لهذا الملف.
ولكن إذا كنت تواجه مشكلات في ذلك ، فيمكنك دائمًا إيقاف تشغيل التحقق من الحقوق في التكوين:
StrictModes no
بالمناسبة ، يوجد في
البرنامجين C: \ Program Files \ OpenSSH نصان (
FixHostFilePermissions.ps1 ،
FixUserFilePermissions.ps1 ) ،
ولكن يجب أن
يكونا غير مطلوبين لإصلاح الحقوق ، بما في ذلك مع
مفاتيح Author_keys ، لكن لسبب ما لن يتم إصلاحها.
تذكر إعادة تشغيل خدمة
sshd بعد تطبيق التغييرات.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Administrator> Get-Host Name : ConsoleHost Version : 5.1.14393.2791 InstanceId : 653210bd-6f58-445e-80a0-66f66666f6f6 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : en-US CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Users\Administrator>
إيجابيات / سلبيات ذاتية.
الايجابيات:
- نهج قياسي للاتصال بالخوادم.
عندما يكون هناك عدد قليل من أجهزة Windows ، يكون من غير المريح جدًا عندما:
لذلك ، هنا نذهب عن طريق SSH ، وهنا RDP ،
وأفضل الممارسات بشكل عام مع الحصون ، أولاً نفق ssh ، ومن خلالها RDP. - سهل الإعداد
أعتقد أن هذا واضح. - سرعة الاتصال والعمل مع جهاز بعيد
لا يوجد غلاف رسومي ؛ يتم حفظ موارد الخادم وكمية البيانات المنقولة.
سلبيات:
- لا يحل محل RDP تماما.
ليس كل شيء يمكن القيام به من وحدة التحكم ، للأسف. أعني الحالات التي تتطلب واجهة المستخدم الرسومية.
المواد المستخدمة في المقال:
رابط للمشروع نفسهتم نسخ خيارات التثبيت بدون خجل من
مستندات Ansible .