الاتصال بـ Windows عبر SSH كما في Linux

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

لذلك ، تعثرت بطريق الخطأ على مشروع Win32-OpenSSH ، قررت لتبادل تجربة التكوين. ربما شخص ما هذه الأداة حفظ مجموعة من الأعصاب.



خيارات التثبيت:

  1. يدويا
  2. عن طريق حزمة الشوكولاتة
  3. عبر 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 .

Source: https://habr.com/ru/post/ar453676/


All Articles