Go up
Вы используете устаревший браузер. Подробнее »
Чтобы использовать все возможности сайта, загрузите и установите один из этих браузеров: Используется тема VK-Style © http://Sergey.Pro
Posts The private archive of professor Preobrazhensky
Картинка профиля Профессор Преображенский

Нужен внешний VPS-сервер с постоянным IP-адресом и доступом по ssh.
Для примера пусть внешний IP-адрес этого сервера будет 185.177.219.27.
В файле /etc/ssh/sshd_config устанавливаем следующие параметры:

ClientAliveInterval 5
ClientAliveCountMax 3
GatewayPorts yes

Добавляем пользователя hs для поддержки входа в сеть за NAT на этом VPS-сервере:

useradd -r -m -k /dev/null hs
cd /home/hs/
mkdir .ssh
chown hs:hs .ssh/
chmod 700 .ssh/

Пусть компьютер за NAT имеет имя al044.
На нём под root генерируем пару ключей при помощи команды ssh-keygen, если их ещё нет.
Далее создаём на VPS-сервере файл /home/hs/.ssh/authorized_keys со следующим содержимым:

command="/bin/echo 6044",no-user-rc,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ключ root@al044

Здесь 6044 — номер порта для доступа к компьютеру al044 по ssh, ключ — сгенерированный на компьютере al044 публичный ключ.
Всё должно быть в одну строку.
На компьютере al044 создаём скрипт /root/ssh_tunnel.sh для запуска ssh-туннеля:

#!/bin/sh
 
SSHCMD="ssh -Tq -o ServerAliveInterval=5 \
    -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    hs@185.177.219.27"
 
while true; do
    PORT=`$SSHCMD`
    if test 0${PORT} -gt 0; then
      $SSHCMD -NC -R "*:${PORT}:127.0.0.1:22"
    fi
  sleep 5
done

Проверяем работу туннеля.
Перезапускаем sshd на VPS-сервере и запускаем скрипт /root/ssh_tunnel.sh на компьютере al044.
Пробуем зайти по ssh на компьютер al041 с VPS-сервера:

ssh -l root 127.0.0.1 -p 6044

Если всё нормально, можно создать сервис для автозапуска скрипта /root/ssh_tunnel.sh на компьютере al041.
Например, для Arch Linux можно сделать так.
Создаём файл /etc/systemd/system/ssht.service со следующим содержимым:

Description=Запуск ssh-туннеля
 
[Service]
ExecStart=/root/ssh_tunnel.sh
 
[Install]
WantedBy=multi-user.target

Далее проверяем работу сервиса:

systemctl start ssht

Если всё нормально, сервис стартует без ошибок, то делаем

systemctl enable ssht

Рубрики: Computer Science, Софт
Метки: , , , ,
No comments yet.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

Перейти к верхней панели