Поврзување со Windows преку SSH како Linux

Отсекогаш сум бил фрустриран од поврзувањето со Windows машини. Не, јас не сум ниту противник, ниту поддржувач на Мајкрософт и нивните производи. Секој производ постои за своја цел, но не се работи за тоа.
Отсекогаш ми беше мачно болно да се поврзам со серверите на Windows, бидејќи овие врски се или конфигурирани на едно место (здраво WinRM со HTTPS) или не работат многу стабилно (здраво RDP за виртуелни машини во странство).

Затоа, случајно наидов на проектот Win32-OpenSSH, решив да го споделам моето искуство за поставување. Можеби оваа алатка ќе заштеди некого многу нерви.

Поврзување со Windows преку SSH како Linux

Опции за инсталација:

  1. Рачно
  2. Преку пакетот Чоколади
  3. Преку Ansible, на пример улога jborean93.win_openssh

Следно, ќе зборувам за првата точка, бидејќи сè е повеќе или помалку јасно со останатото.

Би сакал да напоменам дека овој проект е сè уште во бета фаза, па затоа не се препорачува да се користи во производството.

Значи, преземете го најновото издание, во моментот кога е 7.9.0.0p1-бета. Постојат верзии и за 32 и за 64 битни системи.

Отпакувај внатре C: Program FilesOpenSSH
Задолжителна точка за правилно работење: само СИСТЕМ и административната група.

Инсталирање услуги со помош на скрипта 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

Појаснување: аплет Ново-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

Можете исто така да ја промените стандардната командна школка (по инсталацијата, стандардната е cmd):

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

Појаснување: Мора да наведете апсолутна патека.

Што е следно?

И тогаш го поставивме sshd_config, кој ќе го сместиме В:Програмски податоци. На пример:

PasswordAuthentication no
PubkeyAuthentication yes

И креирајте директориум во корисничката папка .сш, а во него датотеката овластено. Таму ги запишуваме јавните клучеви.

Важно појаснување: само корисникот во чиј директориум се наоѓа датотеката треба да има право да пишува на оваа датотека.

Но, ако имате проблеми со ова, секогаш можете да ја исклучите проверката на правата во конфигурацијата:

StrictModes no

Патем, во C: Program 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>

Субјективни добрите / лошите страни.

Позитивни:

  • Стандарден пристап за поврзување со сервери.
    Кога има малку Windows машини, многу е незгодно кога:
    Значи, овде одиме преку ssh, а овде користиме rdp,
    и општо, најдобрата практика со бастиони е прво ssh тунел, и RDP низ него.
  • Лесно се поставува
    Мислам дека ова е очигледно.
  • Брзина на поврзување и работа со далечинска машина
    Нема графичка обвивка, заштедувајќи ги и ресурсите на серверот и количината на пренесени податоци.

Конс:

  • Не го заменува целосно RDP.
    Не може сè да се направи од конзолата, за жал. Мислам на ситуации кога е потребен GUI.

Материјали што се користат во статијата:
Линк до самиот проект
Опциите за инсталација се бесрамно копирани од Едноставни документи.

Извор: www.habr.com

Додадете коментар