- PVSM.RU - https://www.pvsm.ru -
Ситуация: рабочая машина под управлением Windows находится в корпоративной сети за NAT. Извне хода в сеть нет. К рабочему компьютеру необходим удалённый доступ с домашнего компьютера на Linux. Работа AnyDesk оставляет желать лучшего.
Имеется под управлением Ubuntu server. Организуем SSH туннелирование, для использования штатного Windows RDP
IP: 1.2.3.4
User name: userVPS
Windows (target machine)
User name: userWindows
Директория для сохранения скриптов: %USERPROFILE%Documentsscripts
Administrator login: userAdministrator
Важно: удалённый доступ к рабочему столу должен быть включён (тогда пункт о разрешении удалённого доступа можно пропустить), либо нужно иметь доступ уровня администратора.
Работать быстрее из консоли <Win+R> cmd
Разрешить удалённое подключение к рабочему столу runas /user:userAdministrator "reg add "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f"
Создать ключ для подключения к серверу без ввода пароля ssh-keygen -t ed25519
Скопировать ключ на сервер type "%USERPROFILE%.sshid_ed25519.pub" | ssh user@host "cat >> .ssh/authorized_keys"
Создать скрипт создания и поддержания туннеля:
mkdir %USERPROFILE%Documentsscripts
notepad %USERPROFILE%Documentsscriptsssh_tunnel.ps1
Листинг скрипта
# Будет запускаться по расписанию/событию через Планировщик задач Windows. Формирует SSH туннель (подключения к VPS), а также контролирует и устраняет случай обрыва связи
# Конфигурация
$vpsUser = "userVPS" # имя пользователя
$vpsIp = "1.2.3.4" # адрес VPS
$vpsPort = "22" # порт на VPS для доступа по SSH; хотя опытные люди утверждают, что этот порт не нужно держа��ь открытым
$remotePort = "33389" # порт на VPS для туннелирования
$localPort = "3389" # порт на локальной машине; для RDP стандартный порт 3389
$interval = 3600*2 # 2 часа (в секундах: 3600 сек × 2)
$sshArgs = "-R ${remotePort}:localhost:${localPort} ${vpsUser}@${vpsIp} -N -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes"
Write-Host "Мониторинг туннеля запущен. Интервал: 2 часа." -ForegroundColor Cyan
while ($true) {
# 1. Ищем существующий процесс SSH к этому VPS
$process = Get-Process ssh -ErrorAction SilentlyContinue | Where-Object { $_.CommandLine -like "*$vpsIp*" }
if ($process) {
Write-Host "$(Get-Date): Принудительное обновление сессии..." -ForegroundColor Gray
Stop-Process -Id $process.Id -Force
Start-Sleep -Seconds 2
}
# 2. Запускаем новый туннель
Write-Host "$(Get-Date): Запуск SSH туннеля..." -ForegroundColor Green
Start-Process ssh -ArgumentList $sshArgs -WindowStyle Hidden
# 3. Спим $interval секунд
Start-Sleep -Seconds $interval
}
Создать задачу в Планировщике задач schtasks /Create /SC DAILY /ST 15:00 /TN "SSH tunnel" /TR "powershell.exe -ExecutionPolicy Bypass -File "%USERPROFILE%Documentsscriptsssh_tunnel.ps1""
М-да, это не crontab. Предыдущий пункт в переводе:
создать
запуск ‒ ежедневно
в 15:00
задача с именем: SSH tunnel
команда запуска (обратить внимание на использование кавычек: обрамляющие ‒ обязательно двойные): "powershell.exe -ExecutionPolicy Bypass -File "%USERPROFILE%Documentsscriptsssh_tunnel.ps1""
По умолчанию для RDP используется порт 3389, для схожести туннелировать на сервер будем через порт 33389.
Проверить: не используется ли выбранный порт ss -lt | grep :33389
Открыть порт sudo utf allow 33389/tcp
Перенастроить sshd_config sudo nano /etc/ssh/sshd_config Установить GatewayPorts yes
Перезапустить SSH sudo systemctl restart ssh
Быстрее всего работать в консоли <Ctrl+Alt+T>
Установка Remmina sudo apt-get -y install remmina remmina-plugin-rdp
Добавить конфигурацию соединения: nano ~/.local/share/remmina/workWindows.remmina
В файле конфигурации:
[remmina]
password=.
name=Компьютер на работе
server=194.164.235.131:33389
protocol=RDP
username=userWindows
При запуске Remmina предложит список хостов для подключения, выбрать Компьютер на работе. После запуска останется ввести пароль пользователя целевой машины и активировать сохранение пароля.
Автор: deliri
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ssh/440899
Ссылки в тексте:
[1] VPS: https://www.reg.ru/?rlink=reflink-717
[2] Источник: https://habr.com/ru/articles/983064/?utm_source=habrahabr&utm_medium=rss&utm_campaign=983064
Нажмите здесь для печати.