Загрузка...

Мануал: Быстрый проброс портов через Reverse SSH-туннель

Тема в разделе Статьи создана пользователем солнце 30 янв 2025. (поднята 26 мар 2025) 401 просмотр

  1. солнце
    солнце Автор темы 30 янв 2025 Чужое не нужно... Из-за этого продаю на маркете 463 7 май 2018
    Статья для тех у кого есть VPS но хочет держать сервер на своем ПК и его не устраивает NGrok и ему подобные.
    (для Windows 10/11, без *** и сложных настроек)


    Для кого это?


    Если вам нужно:
    Пробросить порт с VPS (белый IP) на домашний ПК (серый IP).​

    1. Быстро запустить игровой сервер, веб-сервис или другой софт локально, сделав его доступным из интернета.
    2. Обойтись без *** и долгой настройки.

    VPS с Windows 10/11 (доступ по RDP, права администратора).​

    1. Домашний ПК с Windows 10/11.
    2. Открытый порт 22 (или 443) на VPS (проверьте у хостера).
    Установите OpenSSH Server:​

    1. Откройте PowerShell от имени администратора.
      • Выполните команды:
        Код
        # Установка OpenSSH
        Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

        # Запуск службы
        Start-Service sshd
        Set-Service -Name sshd -StartupType 'Automatic'
    2. Откройте порт SSH в брандмауэре:
      Код
      New-NetFirewallRule -Name "SSH" -DisplayName "SSH" -Protocol TCP -LocalPort 22 -Action Allow
    Убедитесь, что SSH-клиент установлен:
    Для этого в PowerShell выполните:

    Код
    # Проверка наличия OpenSSH Client
    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

    # Если не установлен:
    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
    Запустите Reverse SSH-туннель на домашнем ПК:​

    Код
    ssh -R 25565:localhost:25565 username@server_ip -N -f
    Где:
    1. 25565:localhost:25565 → внешний порт на сервере → порт на домашнем ПК.
    2. username → логин администратора VPS (например, Administrator).
    3. server_ip → IP вашего VPS.
    Флаги -N -f оставляют туннель работать в фоне.

    Пример для Minecraft-сервера:
    Если локальный сервер слушает порт 25565, то игроки подключатся к server_ip:25565.
    На VPS:
    Проверьте, что порт слушается:
    Код
    netstat -an | Select-String "25565"
    В выводе должна быть строка: TCP 0.0.0.0:25565 0.0.0.0:0 LISTENING.

    На домашнем ПК:
    Запустите тестовый сервер (например, Python):
    Код
    python -m http.server 25565
    Откройте в браузере http://server_ip:25565 → должно отобразиться содержимое папки​
    Создайте файл tunnel.bat с содержимым:​

    Код
    ssh -R 25565:localhost:25565 username@server_ip -N -f
    Добавьте его в Планировщик задач:
    ⁡Триггер: При запуске. Действие:

    ⁡Запустить программу → укажите путь к tunnel.bat.
    Измените порт SSH на VPS (например, на 443):​

    1. Откройте файл C:\ProgramData\ssh\sshd_config.
      • Добавьте строку:
        ⁡Port 443


      • Перезапустите службу:
        ⁡Restart-Service sshd
    2. Используйте новый порт в команде:

      ⁡ssh -R 25565:localhost:25565 -p 443 username@server_ip -N -f
    Если нужно пробросить порты 25560-25570:
    На домашнем ПК выполните:​

    Код
    for ($port=25560; $port -le 25570; $port++) {
    ssh -R ${port}:localhost:${port} username@server_ip -N -f
    }
    Добавьте команду в tunnel.bat или создайте отдельные задания в планировщике.​
    Порт не слушается на VPS:
    Проверьте брандмауэр VPS: New-NetFirewallRule -Name "GamePort" -Protocol TCP -LocalPort 25565 -Action Allow.
    Убедитесь, что туннель активен: Get-Process ssh.

    Ошибка «Connection refused»:
    Убедитесь, что локальный сервер на домашнем ПК запущен и слушает нужный порт.​

    SS-соединение обрывается:
    Добавьте параметр -o ServerAliveInterval=60 в команду SSH для поддержания связи.​
    Информацию я брал с открытых источников, расписал мануал, но для красоты и правильности текста прогнал через ГПТ-брата. Всем спасибо<3​
     
    Этот материал оказался полезным?
    Вы можете отблагодарить автора темы путем перевода средств на баланс
    Отблагодарить автора
    30 янв 2025 Изменено
Загрузка...
Top