Мене завжди пригнічувало підключення до Windows машин. Ні, я не противник і не прихильник Microsoft та їхні продукти. Кожен продукт існує для своєї мети, але не про це.
Для мене завжди було боляче підключатися до серверів з Windows, тому що ці підключення або налаштовуються через одне місце (привіт WinRM з HTTPS) або працюють не дуже стабільно (привіт RDP до віртуалок за океаном).
Тому, випадково натрапивши на проект Win32-OpenSSHя вирішив поділитися досвідом налаштування. Можливо комусь цей тулза заощадити купу нервів.
Далі я розповідатиму про перший пункт, оскільки з іншими і так все більш-менш зрозуміло.
Зазначу, що цей проект поки що перебуває на стадії beta, тому його не рекомендують використовувати у production.
Отже, завантажуємо останній реліз, на даний момент це 7.9.0.0p1-beta. Є версії як для 32, так і для 64 бітних систем.
Розпаковуємо в C:Program FilesOpenSSH
Обов'язковий момент для коректної роботи: права на запис у цій директорії мають бути лише у SYSTEM та в адмінської групи.
Встановлюємо послуги скриптом 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.