Мяне заўсёды гняло падлучэнне да Windows машын. Не, я не супернік і не прыхільнік Microsoft і іх прадуктаў. Кожны прадукт існуе для сваёй мэты, але гаворка не пра гэта.
Для мяне заўсёды было пакутліва балюча падлучацца да сервераў з Windows, таму што гэтыя падлучэнні альбо наладжваюцца праз адно месца (прывітанне WinRM з HTTPS) альбо працуюць не вельмі стабільна (прывітанне RDP да віртуалак за акіянам).
Таму, выпадкова натыкнуўшыся на праект Win32-OpenSSH, я вырашыў падзяліцца вопытам наладкі. Магчыма каму-небудзь гэты тулза зэканоміць кучу нерваў.
Далей я буду расказваць пра першы пункт, бо з астатнімі і так усё больш менш зразумела.
Адзначу, што гэты праект пакуль што знаходзіцца на стадыі beta, таму яго не рэкумендуюць выкарыстоўваць у production.
Такім чынам, спампоўваем апошні рэліз, на бягучы момант гэта 7.9.0.0p1-beta. Ёсць версіі як для 32 так і для 64 бітных сістэм.
Распакоўваем у C:Program FilesOpenSSH
Абавязковы момант для карэктнай працы: правы на запіс у гэтай дырэкторыі павінны быць толькі ў СІСТЭМА і ў адмінскай групы.
Усталёўваны сэрвісы скрыптам install-sshd.ps1 якія знаходзяцца ў гэтай дырэкторыі
Удакладненне: аплет New-NetFirewallRule выкарыстоўваецца на Windows Server 2012 і навей. У найболей старых сістэмах (або дэсктопных) можна скарыстацца камандай:
А далей наладжваем sshd_config, які размесцім у C:ProgramDatassh. напрыклад:
PasswordAuthentication no
PubkeyAuthentication yes
І ствараем у карыстацкай тэчцы дырэкторыю .ssh, а ў ёй файл аўтарызаваныя_ключы. Туды запісваем публічныя ключы.
Важнае ўдакладненне: правы на запіс у гэты файл, павінен мець толькі карыстач, у чыёй дырэкторыі ляжыць файл.
Але калі ў вас праблемы з гэтым, заўсёды можна выключыць праверку правоў у канфігу:
StrictModes no
Дарэчы, у C:Program FilesOpenSSH ляжаць 2 скрыпты (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), якія павінны але не абавязаны фіксаваць правы, у тым ліку і з аўтарызаваныя_ключы, але чамусьці не фіксяць.
Не забываецца перазапускаць сэрвіс SSHD пасля для прымянення змен.
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, а тут РДП,
і наогул best-practice з бастыёнамі, спачатку ssh-тунэль, а праз яго RDP.
Прастата налады Лічу, што гэта відавочна.
Хуткасць падлучэння і працы з выдаленай машынай Няма графічнай абалонкі, эканомяцца як рэсурсы сервера, так і колькасць перадаваных дадзеных.
Мінусы:
Не замяняе RDP цалкам. Не ўсё можна зрабіць з кансолі, нажаль. Я маю на ўвазе сітуацыі, калі патрабуецца GUI.