Есть у 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
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 и компьютер не в домене.