Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VDS Proxy

Десктопное приложение для Windows и Linux, которое поднимает локальный SOCKS5-прокси и направляет трафик через SSH-соединение с удалённым VDS.

Приложение подходит для Telegram, браузеров, FoxyProxy и других программ с поддержкой SOCKS5. Устанавливать системный SSH-клиент или отдельный прокси-сервер на VDS не требуется.

Окно VDS Proxy

Скачать последнюю версию для Windows или Linux

Возможности

  • подключение к VDS по SSH с приватным ключом;
  • поддержка RSA, ECDSA и Ed25519 в форматах OpenSSH, PEM и PKCS#8;
  • запрос пароля для зашифрованного ключа без сохранения на диск;
  • SOCKS5-прокси на локальном адресе 127.0.0.1;
  • передача DNS-запросов через VDS при поддержке удалённого DNS клиентом;
  • проверка SHA256-отпечатка SSH-сервера при первом подключении;
  • блокировка подключения при неожиданной смене ключа сервера;
  • автоматическое переподключение после временного обрыва сети;
  • сохранение адреса, портов, пользователя и пути к ключу;
  • готовые сборки для Windows x86-64 и Linux x86-64.

Как это работает

Telegram или браузер
        |
        | SOCKS5 127.0.0.1:1080
        |
    VDS Proxy
        |
        | зашифрованное SSH-соединение
        |
      VDS
        |
        | соединение с нужным сайтом
        |
     Интернет

Приложение не выполняет команды на VDS и не изменяет его конфигурацию. Для каждого запроса SOCKS5 оно открывает стандартный SSH-канал direct-tcpip.

Быстрый старт

Windows

  1. Скачайте VDS-Proxy-windows-x86_64.exe со страницы Releases.
  2. Запустите файл.
  3. Если Windows SmartScreen предупредит о неизвестном издателе, откройте «Подробнее» и выберите «Выполнить в любом случае».

Сборка пока не подписана коммерческим сертификатом. Проверить целостность файла можно по SHA256SUMS из релиза.

Linux

Скачайте AppImage, разрешите его выполнение и запустите:

chmod +x VDS-Proxy-linux-x86_64.AppImage
./VDS-Proxy-linux-x86_64.AppImage

Для локальной сборки из репозитория:

go run ./cmd/vds-proxy

Настройка подключения

В главном окне заполните:

Поле Что указать
Адрес VDS IP-адрес или доменное имя сервера
SSH-порт Обычно 22
Пользователь Пользователь Linux, которому добавлен публичный ключ
Приватный ключ Локальный файл соответствующего приватного ключа
Локальный порт Обычно 1080; можно выбрать другой свободный порт

Нажмите «Запустить прокси». При первом подключении приложение покажет алгоритм и SHA256-отпечаток ключа сервера. Сверьте отпечаток с данными администратора VDS и только после этого подтвердите доверие.

После подключения приложение покажет адрес:

127.0.0.1:1080

Именно его необходимо указать в программе, трафик которой должен проходить через VDS.

Настройка программ

Telegram Desktop

  1. Откройте «Настройки» → «Продвинутые настройки» → «Тип соединения».
  2. Выберите SOCKS5.
  3. Укажите сервер 127.0.0.1 и порт 1080.
  4. Имя пользователя и пароль оставьте пустыми.

Firefox

  1. Откройте настройки сети.
  2. Выберите ручную настройку прокси.
  3. В поле SOCKS укажите 127.0.0.1, порт 1080.
  4. Выберите SOCKS v5.
  5. Включите проксирование DNS через SOCKS v5.

Chrome и Chromium

Chrome не предоставляет отдельную постоянную настройку SOCKS5 в интерфейсе. Используйте FoxyProxy или аналогичное расширение и создайте профиль:

Тип: SOCKS5
Адрес: 127.0.0.1
Порт: 1080

Включите удалённое разрешение DNS, если расширение предлагает такую настройку.

Подготовка VDS

На сервере должен работать OpenSSH и быть разрешён local TCP forwarding. Рекомендуется создать отдельного непривилегированного пользователя и разрешить ему вход только по ключу.

Пример важных параметров /etc/ssh/sshd_config:

AllowTcpForwarding local
PasswordAuthentication no
PermitTTY no
X11Forwarding no
AllowAgentForwarding no

Публичную часть ключа добавьте в:

/home/<пользователь>/.ssh/authorized_keys

Перед перезапуском SSH проверьте конфигурацию:

sudo sshd -t

Не закрывайте текущую административную SSH-сессию, пока не проверите вход нового пользователя и работу forwarding.

Безопасность

  • Локальный прокси слушает только 127.0.0.1 и недоступен другим устройствам локальной сети.
  • Пароль приватного ключа существует только в памяти работающего приложения.
  • Сам приватный ключ не копируется в каталог приложения.
  • Доверенные ключи серверов сохраняются в отдельном known_hosts.
  • При смене ключа VDS соединение блокируется. После подтверждённой переустановки сервера используйте в приложении кнопку «Сбросить доверие».
  • Приложение не анализирует и не записывает передаваемый трафик.

Используйте прокси только на серверах и для трафика, которыми вы имеете право управлять.

Где хранятся настройки

Приложение использует стандартный пользовательский каталог конфигурации операционной системы. Сохраняются только:

  • адрес VDS;
  • SSH-порт и пользователь;
  • локальный порт;
  • путь к приватному ключу;
  • подтверждённые публичные ключи серверов.

Пароли и содержимое приватных ключей не сохраняются.

Возможные проблемы

«VDS отклонил соединение»

Проверьте адрес сервера, SSH-порт, сетевой экран и доступность sshd.

«SSH не принял ключ»

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

«Локальный порт уже занят»

Выберите другой порт, например 1081, и укажите тот же порт в Telegram или браузере.

После подключения сайты определяют прежний IP

Убедитесь, что программа действительно использует SOCKS5-профиль. Для браузера также включите удалённое разрешение DNS через прокси.

Сервер переустановлен, ключ изменился

Сначала независимо проверьте новый SHA256-отпечаток. Затем нажмите «Сбросить доверие» и подключитесь заново.

Разработка

Требуются Go 1.24 или новее, C-компилятор и системные зависимости Fyne.

go mod download
go test ./...
go run ./cmd/vds-proxy

Основные пакеты:

  • internal/tunnel: SSH-подключение и жизненный цикл туннеля;
  • internal/socks: минимальный SOCKS5-сервер;
  • internal/hostkeys: проверка и хранение ключей серверов;
  • internal/config: настройки приложения;
  • internal/ui: интерфейс Fyne.

Сборка

Linux:

go build -trimpath -ldflags="-s -w" -o vds-proxy ./cmd/vds-proxy

Windows собирается через MinGW или fyne-cross. Workflow .github/workflows/release.yml запускает тесты и создаёт:

  • VDS-Proxy-windows-x86_64.exe;
  • VDS-Proxy-linux-x86_64.AppImage;
  • SHA256SUMS.

Workflow запускается вручную или при отправке тега вида v*.

Лицензия

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

About

Десктопный SOCKS5-прокси через SSH для Windows и Linux

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages