Создание туннеля
Проброс порта с компа спрятанного за файрволом (workstation) на личный vps.org (учётка user):
workstation:22 ⇔ vps.org:2222
1 2 3 |
employee@workstation:~$ ssh -R 2222:localhost:22 user@vps.org # ... Авторизация на user@vps.org (проверка пароля и/или ключа) user@vps.org:~$ |
Подключение к компу спрятанному за файрволом:
1 2 3 4 5 6 7 |
# Подключаемся к vps: user@home:~$ ssh user@vps.org # ... Авторизация на user@vps.org (проверка пароля и/или ключа) # Теперь с vps.org можно подключиться к workstation user@vps.org:~$ ssh -p 2222 employee@localhost # ... Авторизация на employee@workstation (проверка пароля и/или ключа) employee@workstation:~$ |
Скрипт для автоподключения
Цикл автоподключения был нагуглен в интернете и немного изменён:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#!/bin/bash ########################## Настройки: ########################### HOST=vps.org USER=user ########## Программа соединения с сервером ########## SSHCMD="ssh -Tq -o ServerAliveInterval=5 \ -o UserKnownHostsFile=/dev/null \ -o StrictHostKeyChecking=no \ $USER@$HOST" while true; do PORT=`$SSHCMD` if test 0${PORT} -gt 0; then $SSHCMD -NC -R "*:${PORT}:127.0.0.1:22" fi sleep 120 done |
Во-первых, скрипт основан на бесконечном цикле с паузой для переподключений при разрывах. Во-вторых, для удачного соединения скрипт осуществляет два подключения. При первом получает порт на который можно пробросить свой ssh-порт (22), при втором открывает туннель.
Для корректной работы от сервера тоже требуется соблюдать правила:
- Наличие ключа для авторизации без пароля
- Параметры для авторизации по ключу
1 |
command="/bin/echo 2222",no-user-rc,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa <client_public_key> |