اتصال به ویندوز از طریق SSH مانند لینوکس

من همیشه از اتصال به دستگاه های ویندوز ناامید شده ام. نه، من نه مخالف و نه حامی مایکروسافت و محصولاتش هستم. هر محصول برای هدف خود وجود دارد، اما این چیزی نیست.
اتصال به سرورهای ویندوز همیشه برای من بسیار دردناک بوده است، زیرا این اتصالات یا از طریق یک مکان پیکربندی شده اند (سلام WinRM با HTTPS) یا خیلی پایدار کار نمی کنند (سلام RDP به ماشین های مجازی خارج از کشور).

بنابراین، به طور تصادفی در سراسر پروژه Win32-OpenSSH، تصمیم گرفتم تجربه راه اندازی خود را به اشتراک بگذارم. شاید این ابزار خیلی از اعصاب کسی را نجات دهد.

اتصال به ویندوز از طریق SSH مانند لینوکس

گزینه های نصب:

  1. دستی
  2. از طریق بسته شکلات
  3. از طریق Ansible، به عنوان مثال نقش jborean93.win_openssh

بعد، من در مورد اولین نکته صحبت می کنم، زیرا همه چیز در مورد بقیه کم و بیش روشن است.

لازم به ذکر است که این پروژه هنوز در مرحله بتا است، بنابراین استفاده از آن در تولید توصیه نمی شود.

بنابراین، آخرین نسخه را در لحظه ای که هست دانلود کنید 7.9.0.0p1-بتا. نسخه هایی برای هر دو سیستم 32 و 64 بیتی وجود دارد.

باز کردن بسته در ج: برنامه FilesOpenSSH
یک نکته اجباری برای عملکرد صحیح: فقط 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 در ویندوز سرور 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

همچنین می توانید پوسته فرمان پیش فرض را تغییر دهید (پس از نصب، پیش فرض است CMD):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

توضیح: شما باید یک مسیر مطلق را مشخص کنید.

گام بعدی چیست؟

و سپس آن را راه اندازی کردیم sshd_config، که در آن قرار خواهیم داد ج: داده های برنامه. به عنوان مثال:

PasswordAuthentication no
PubkeyAuthentication yes

و یک دایرکتوری در پوشه کاربر ایجاد کنید .ssh، و در آن فایل کلیدهای مجاز. کلیدهای عمومی را در آنجا یادداشت می کنیم.

توضیح مهم: فقط کاربری که فایل در دایرکتوری او قرار دارد باید حق نوشتن در این فایل را داشته باشد.

اما اگر با این مشکل دارید، همیشه می توانید بررسی حقوق را در پیکربندی خاموش کنید:

StrictModes no

به هر حال، در ج: برنامه FilesOpenSSH 2 اسکریپت وجود دارد (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1) که باید اما ملزم به تثبیت حقوق از جمله با کلیدهای مجاز، اما به دلایلی ثبت نام نمی کنند.

فراموش نکنید که سرویس را دوباره راه اندازی کنید ssh پس از اعمال تغییرات

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> 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:UsersAdministrator>

مزایا/معایب ذهنی

مزایا:

  • رویکرد استاندارد برای اتصال به سرورها
    هنگامی که دستگاه های ویندوز کمی وجود دارد، بسیار ناخوشایند است زمانی که:
    بنابراین، در اینجا از طریق ssh می رویم، و در اینجا از rdp استفاده می کنیم،
    و به طور کلی بهترین تمرین با سنگرها ابتدا یک تونل ssh و RDP از طریق آن است.
  • راه اندازی آسان
    من فکر می کنم این واضح است.
  • سرعت اتصال و کار با دستگاه از راه دور
    هیچ پوسته گرافیکی وجود ندارد که هم منابع سرور و هم مقدار داده های ارسال شده را ذخیره می کند.

منفی:

  • به طور کامل جایگزین RDP نمی شود.
    همه چیز را نمی توان از کنسول انجام داد، افسوس. منظورم شرایطی است که نیاز به رابط کاربری گرافیکی است.

مواد استفاده شده در مقاله:
لینک خود پروژه
گزینه های نصب بی شرمانه از آن کپی شده است اسناد قابل قبول.

منبع: www.habr.com

اضافه کردن نظر