SSH وPowerShell: إعداد عميل SSH على Windows

بانكما كان يا مرة، كنت مقيدًا في نوع الحواسيب التي يمكنك الاتصال بها باستخدام نافذة باورشيل باستخدام تحكم نافذة باورشيل. حيث أن دعم تحكم نافذة باورشيل كان مقتصرًا على موفر WsMan، كانت فرصك في الاتصال بأجهزة الحواسيب التي تعمل بنظام Linux، على سبيل المثال، تكاد تكون غير موجودة. ولكن في عام 2015، قدمت مايكروسوفت الدعم لبروتوكول SSH في نظام Windows، مما جلب العديد من الإمكانيات وأخيرًا سمح لك باستخدام SSH ونافذة باورشيل معًا.

في هذا المقال، سنقوم بالتفحص ونرى كيفية إعداد عميل SSH في نظام Windows وكيف يمكنك الاستفادة من استخدام SSH وتحكم نافذة باورشيل معًا.

يعد هذا المقال حول SSH ونافذة باورشيل جزءًا من سلسلة مدونات #PS7Now. تأكد من فحص جميع المساهمين الآخرين في هذه السلسلة في أسفل هذا المقال.

قبل أن تبدأ

سيكون هذا المقال دورًا تعليميًا. إذا كنت تنوي المتابعة، تأكد من تلبية المتطلبات الأساسية التالية:

  • ويندوز 10 – ستستخدم كل الأمثلة نسخة ويندوز 10 الإصدار 1903. سيكون المثال في نفس المجال مثل الخادم البعيد لنظام ويندوز.
  • تثبيت بووشل v6+ على ويندوز 10 – ستستخدم كل الأمثلة باستخدام بووشل 7 RC2.
  • A remote SSH server – All examples will use a Windows Server SSH machine. If you’re connecting to a Linux machine, you can skip the server setup steps.
  • منفذ TCP 22 متاح على الخادم البعيد

إعداد عميل SSH (ويندوز 10)

قبل أن تفتح وحدة تحكم بووشل، ستحتاج أولاً إلى أداء بعض المهام لمرة واحدة لجعل SSH وبووشل يعملان معًا للتأكد من أن ويندوز 10 يمكنه الاتصال بخادم SSH بعيد.

أضف مجلد OpenSSH إلى متغير البيئة PATH

يأتي OpenSSH مثبتًا مسبقًا على ويندوز 10 ولكن في بعض الأحيان يحتاج إلى القليل من المساعدة للعمل مع الاتصال بالبووشل. إذا كنت قد حاولت بالفعل استخدام Enter-PSSession، على سبيل المثال، للاتصال بنظام SSH بعيد وواجهت الخطأ أدناه، فعليك التأكد من المسار إلى الملف التنفيذي لـ OpenSSH (ssh.exe) في متغير البيئة PATH.

Enter-PSSession : An error has occurred which PowerShell cannot handle. A remote session might have ended.

لإضافة مسار مجلد OpenSSH إلى متغير البيئة PATH، انقر على الزر ابدأ وابحث عن إعدادات النظام المتقدمة ثم انقر على عرض إعدادات النظام المتقدمة كما هو موضح أدناه.

Adding OpenSSH folder path

عند فتح نافذة خصائص النظام، انقر على زر متغيرات البيئة.

Environment Variables in System Properties

في نافذة متغيرات البيئة، تحت متغيرات النظام، حدد Path وانقر على تحرير.

System Variables in the Environment Variables

في نافذة تحرير متغير البيئة، انقر على جديد ثم أدخل المسار الذي يحتوي على تنفيذي ssh.exe. في هذا البرنامج التعليمي، المسار هو C:\Program Files\OpenSSH كما هو موضح أدناه. بمجرد إدخاله، انقر على موافق مرتين لحفظ القيمة الجديدة.

Editing Environment Variable

تحديد النظام الفرعي لبروتوكول SSH

ستحتاج الآن إلى تحديد النظام الفرعي لبروتوكول SSH الذي يجب على PowerShell الاتصال به عند الاتصال عبر SSH على خادم Windows البعيد. إذا لم تخبر PowerShell بنظام الفرعي الذي يجب استخدامه، ستحصل بالتأكيد على الخطأ التالي:

Enter-PSSession : قام العملية الخلفية بالإبلاغ عن خطأ برسالة الخطأ التالية: انتهت جلسة العميل SSH برسالة خطأ: فشل طلب النظام الفرعي على القناة 0.

يرجى ملاحظة أنه إذا لم تكن تتصل بجهاز خادم Windows، فلن تحتاج إلى أداء هذه الخطوات.

على خادم Windows عن بُعد، افتح ملف C:\ProgramData\ssh\ssh_config. انتقل إلى قسم override default of no subsystems في ملف ssh_config. سيكون القسم مشابهًا للتقاط الشاشة أدناه.

Override Default of no Subsystems

أسفل السطر الحالي لـ Subsystem، أضف subsytem لـ PowerShell باستخدام السطر التالي:

Subsystem	powershell pwsh.exe -sshs -NoLogo -NoProfile

الآن احفظ ملف ssh_config وأعد تشغيل خدمة Windows sshd على خادم Windows عن بُعد كما هو موضح أدناه.

Get-Service -Name sshd | Restart-Service

بمجرد إعادة تشغيل الخدمة، يجب أن تكون قادرًا الآن على الاتصال عبر SSH و PowerShell.

الاتصال عبر PowerShell و SSH

الآن بعد إكمال التكوين، حان وقت اختبار PowerShell Remoting.

أولاً، حاول الدخول إلى جلسة تفاعلية باستخدام cmdlet Enter-PSSession. على عكس ما قد تكون معتادًا عليه، لن تستخدم not parameter ComputerName. بدلاً من ذلك، ستستخدم parameter HostName لتحديد الكمبيوتر عن بُعد.

افتراضيًا، يستخدم PowerShell Remoting لا يزال WsMan. لتجاوز الإعداد الافتراضي، استخدم parameter SSHTransport للإشارة إلى رغبتك في الاتصال عبر SSH و PowerShell.

عند محاولة الاتصال للمرة الأولى بواسطة اسم المستخدم وكلمة المرور، ستحتاج إلى إنشاء مفتاح SSH الخاص بك. للقيام بذلك، ستُطلب منك كما هو موضح أدناه. عندما تُطلب، اكتب ‘y’ للموافقة.

Creating SSH Private Key

ثم سيُطلب منك كلمة مرور المستخدم الذي تم تسجيل الدخول به حاليًا.

أشير إلى أن في هذا المثال، نظام تشغيل Windows 10 الخاص بالعميل وخادم SSH لنظام التشغيل Windows في نفس مجال Active Directory. بشكل افتراضي، سيحاول PowerShell Remoting المصادقة باستخدام المستخدم الذي قام بتسجيل الدخول. يمكنك أيضًا استخدام معامل Credential لتحديد اسم مستخدم وكلمة مرور مختلفين.

بعد توفير كلمة المرور، يجب أن تكون الآن في واجهة سطر أوامر PowerShell Remoting مألوفة.

Powershell Remoting Prompt

الآن، اخرج من الجلسة باستخدام exit ثم جرب New-PSSession. لاحظ أنه باستخدام نفس HostName ومعلمات SSHTransport كما كان الحال من قبل، يظهر الآن Transport كـ SSH.

لا يزال بإمكانك أيضًا استخدام WsMan كبروتوكول نقل أيضًا باستخدام معامل ComputerName دون استخدام معامل SSHTransport.

ليس من الضروري استخدام اسم مستخدم وكلمة مرور لبروتوكول SSH. يمكنك بدلاً من ذلك استخدام ملف مفتاح خاص واستخدام معامل KeyFilePath لتحديد الموقع.

New PSSession Showing up SSH

لا تنسى تنظيف الجلسات المفتوحة باستخدام Get-PSSession | Remove-PSSession!

الملخص

يجب أن تعرف الآن كيفية إعداد Windows 10 و Windows Server لاستخدام SSH مع PowerShell Remoting. بعد التكوين، الفرق الوحيد بين استخدام WsMan كبروتوكول نقل واستخدام SSH هو عدد قليل من المعاملات!

إذا كنت ترغب في معرفة المزيد حول PowerShell و SSH، تأكد من التحقق من التحكم عن بُعد في PowerShell عبر SSHمقالة التوثيق من Microsoft.

#PS7Now المساهمين

كانت هذه المشاركة جزءًا من سلسلة حول PowerShell 7 من قبل المساهمين الرائعين الذين تراهم أدناه. تأكد من التحقق من مشاركاتهم ومشاهدة ما يقومون به على مدوناتهم!

Author Twitter Blog
Josh King @WindosNZ https://toastit.dev/
Adam Bertram @adbertram https://adamtheautomator.com/
Jonathan Medd @jonathanmedd
Thomas Lee @doctordns https://tfl09.blogspot.com/
Prateek Singh @singhprateik https://ridicurious.com
Dave Carroll @thedavecarroll https://powershell.anovelidea.org/
Dan Franciscus @dan_franciscus https://winsysblog.com/
Jeff Hicks @jeffhicks https://jdhitsolutions.com
Josh Duffney @joshduffney http://duffney.io/
Mike Kanakos @MikeKanakos https://www.networkadm.in/
Tommy Maynard @thetommymaynard https://tommymaynard.com//
#PS7Now Contributors

Source:
https://adamtheautomator.com/powershell-ssh/