Openssh , ключи и Windows.

Есть у ssh сервера в линуксах замечательная штука : туннель.

А оказывается openSSH server он и в windows 10 имеется и без всякого дополнительного софта.

Нафига нам такое «щастье» как ssh: обменялись парой ключей, подняли тоннель , зацепились по rdp к конечной машине. Всё для того,чтоб «rdp наружу не торчал».

Установка сервера и агента проста из powershell выполним :

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

А дальше начинаются танцы с бубном. Стартуем агента и сам сервер.

Start-Service ssh-agent; Start-Service sshd
Вот что появится после старта службы сервера opennssh в %programdata%/ssh

sshd_config — конфигурационный файл нашего openssh сервера — начнем с него. Внесем минимальный набор того что надо.

Port 22 --- оставим на локальной машине как есть
PubkeyAuthentication yes --- это чтобы ключами аутентифицироваться
PasswordAuthentication no --- это чтобы никаких паролей не использовать
# Match Group administrators
#       AuthorizedKeysFile #__PROGRAMDATA__/ssh/administrators_authorized_keys  --- это закоментим

Рестартуем сервис :

restart-service sshd

Нагенерим пару ключей:

ssh-keygen.exe

на выходе получим 2 файла (открытый и закрытый ключ)

Ключи сгенерили. Теперь переходим на раб станцию с которой будем подключаться. Проставляем агента. Копируем закрытый ключ (id_rsa) в %userprofile%/.ssh

Выставляем права на него без этого чуда не будет :

Убираем наследование , оставляем только «систему» и пользователя из под которого всё ставили

На клиенте можно «скормить» файл закрытого ключа службе, что бы не указывать его каждый раз при подключении , я так и сделал))

ssh-add .\id_rsa

Возвращаемся к серверу: в папке %USERPROFILE%\.ssh создаем файл authorized_keys , копируем в него содержимое файла id_rsa.pub и выставляем на него права по аналогии как с файлом на клиенте:

Проверяем как оно подключается

Осталось пробросить 22 порт через роутер наружу , в моем случае через домашний микротик.

Попробуем «снаружи достучаться»

где sweehome.razzorro.ru — DNS запись для внешнего IP и видим туже картину )))))

Пробуем пробросить туннель : ssh -L 8888:192.168.137.220:3389 razzorro@sweethome.razzorro.ru -p 56432

Цепляемся по RDP

Туннель функционирует!!

Небольшое пояснение : логин который следует использовать при коннекте к серверу openSSH — это имя учетки из под которой сервер ставился , в моём случае это — razzorro и компьютер не в домене.