Сегодня, 11.09.2026, я сформирую набор действий и подготовлю первую версию скрипта для Windows, с помощью которого хочу получить ещё один способ доступа в интернет без ограничений.

В основе решения — удалённое администрирование Ubuntuсистем посредством SSH (Secure Shell) с использованием встроенной возможности создания SOCKSпрокси.

Иными словами, задача достаточно простая: получить ещё один рабочий вариант доступа к интернету на базе связки SSH + SOCKS + VPS. Это не новый подход, а скорее практическая реализация уже давно известного способа, который можно использовать для собственных нужд.

Зачем появилась эта заметка

Причина появления заметки довольно практическая. На текущий момент используются несколько вариантов подключения:

  • 3proxy — периодически домашние провайдеры блокируют или иным образом прерывают соединения;
  • WireGuard + Mangle правила — пока работает;
  • Ubuntu 24.04 + XFCE4 + AmneziaVPN Client — также пока работает.

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

Что понадобится для практической реализации

Для начала достаточно следующего:

  • рабочая система на базе Windows 10 Pro (Version 10.0.18362.356);
  • тестовый редактор Notepad++;
  • VPS с установленной Ubuntu или другой подходящей системой. В данном случае VPS должен находиться за пределами России.

Шаг №1: С Windows системы (в данной заметке: Windows 10 Pro (Version 10.0.18362.356)) через которую я взаимодействую с личными и обслуживаемыми VPS системами (где OS: Ubuntu) посредством утилиты puttygen (у меня версия 0.78) формирую публичный и приватный ключ.

публичный прописываю на VPS системе сервиса ssh файл /etc/ssh/authorized_keys

приватный сохраняю себе на систему, к примеру, в каталог c:\script\vps_logon@wan_vps_ip_private_key.ppk

"Подключение к серверу Ubuntu Bionic Server через Putty + Public Key"

"Подключение к серверу Ubuntu 20.04 Server через Putty + Public Key"

Шаг №2: Настраиваем на VPS системе, к примеру, у меня это Ubuntu 22.04 LTS Server доступ через SSH на основе ключей, т.е. не нужно вводить логин и пароль, а только логин и приватный ключ, публичный прописываем в /etc/ssh/authorized_keys:

Ниже один из моих примеров настройки сервиса sshd:

vps_logon@wan_vps_ip:~$ sudo nano /etc/ssh/sshd_config

Include /etc/ssh/sshd_config.d/*.conf

Port 22

PermitRootLogin no

PubkeyAuthentication yes

AuthorizedKeysFile /etc/ssh/authorized_keys

PasswordAuthentication no

PermitEmptyPasswords no

KbdInteractiveAuthentication no

UsePAM yes

AllowTcpForwarding yes

X11Forwarding yes

PrintMotd no

PrintLastLog no

TCPKeepAlive yes

Banner none

AcceptEnv LANG LC_*

Subsystem       sftp    /usr/lib/openssh/sftp-server

AllowGroups sshauth

vps_logon@wan_vps_ip:~$ sudo service ssh restart

Шаг №3: Проверяем, что можем с Windows 10 Pro выполнить подключение к VPS системе:

Win + r -> cmd.exe

C:\Users\<windows_username>ssh -l vp_logon <vps_ip> -i C:\script\vp_logon@wan_vps_ip_private_key.ppk -p 22

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Permissions for 'C:\script\vp_logon@wan_vps_ip_private_key.ppk' are too open.

It is required that your private key files are NOT accessible by others.

This private key will be ignored.

Load key "C:\script\vp_logon@wan_vps_ip_private_key.ppk": bad permissions

vps_logon@<vps_ip>: Permission denied (publickey).

Это кстати нормально, лечится данная ошибка заметкой: "Windows SSH Permissions for private key are too open"

Шаг №4: После предыдущего шага и действий заметки из файла приватного ключа (ppk-файл) нужно содержимое, для этого открываем его через текстовый редактор notepad++ и копирую в наш скрипт.

ниже пример что содержит ppk-файл

-----BEGIN OPENSSH PRIVATE KEY-----

b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNl

F/osLg4hPje7BoMAAAASZWNkc2Eta2V5LTIwMjMwNzMxAQIDBAUG

-----END OPENSSH PRIVATE KEY-----

Шаг №5: В процессе написания мне потребовалось узнать SID встроенных групп Windows:

rem wmic group where "name='Пользователи'" get name,sid = S-1-5-32-545

rem wmic group where "name='Администраторы'" get name,sid = S-1-5-32-544

rem "Прошедшие проверку" = S-1-5-11

rem "Система" = S-1-5-18

На заметку: правильнее будет удалять разрешения на каталог указывая не именование группы, а SID

Шаг №6: Чтобы поднять SOCKSпрокси нужно:

-D 31280 -> включаем динамическое перенаправление (SOCKS) на порт 31280 (Вы указываете выше 1024)

-N -> указывает SSH не выполнять удаленные команды (нужно только для туннелирования)

-o StrictHostKeyChecking=no -> отключает проверку ключа сервера при первом подключении. SSH не будет спрашивать: «Вы уверены, что хотите продолжить подключение (yes/no)?». Ключ автоматически примется

-o UserKnownHostsFile=NUL -> указывает SSH записывать (и искать) известные ключи серверов в «пустоту» (для Windows это файл NUL, аналог /dev/null на Linux). Благодаря этому на вашем компьютере не сохраняются следы подключения к этому серверу.

-o ServerAliveInterval=60 -> каждые 60 секунд ваш компьютер будет отправлять серверу «пустой» пакет, чтобы поддерживать соединение активным (чтобы роутер или провайдер не сбросили его из-за неактивности).

-o ServerAliveCountMax=3 -> если сервер не ответит на 3 таких пакета подряд, SSH-клиент закроет зависшее соединение.

Шаг №7: Приступаю, сперва сделаем чтобы можно было просто подключиться к VPS системе:

tips_script_ssh_tunnel_to_vps_v1

Шаг №8: После формирую скрипт работы в качестве socks организации:

tips_script_ssh_tunnel_to_vps_socks_browser_v1

Шаг №9: В каталоге C:\script располагаю два скрипта

1. tips_script_ssh_tunnel_to_vps_socks_browser_v1

2. tips_script_socks_browser_delete_v1

содержание 2-го скрипта

@echo off
rem Windows 10 Pro Version 10.0.18363.657
rem Proxy disable
rem Win - набираю Параметры прокси-сервера - Прокси-сервер и где "Использовать прокси-сервер"
rem Kill: Win - набираю Параметры прокси-сервера - Прокси-сервер и где "Использовать прокси-сервер"
taskkill /F /IM "SystemSettings.exe"
netsh winhttp reset autoproxy
rem netsh winhttp reset proxy
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /f
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f
set "path_key=c:\keyppk"
if exist %path_key% rmdir /S /Q %path_key%

Шаг №10: Порядок использования:

  • запускаем под пользователем 1-й скрипт, он подключается к VPS системе и сворачиваем подключение
  • открываем браузер и уже Socks прописан
  • можно серферить
  • после закрываем свернутое подключение
  • и запускаем 2-й скрипт, он удалит изменения по части socks в реестре

Ну не сказать, что очень удобно так использовать подключение, но как альтернатива быстрой организации подключения из того что есть, у меня свои наработки в лице инструкций, скриптов, файлов доступа в переносной структуре после подключения шифрованного диска, так что все нормально.

На заметку: Предполагаю, что тот кто будет применять заметку к себе понимает что написано.

На этом заметка завершена, с уважением автор блога ekzorchik.

 

От ekzorchik