Назад | Перейти на главную страницу

Как настроить сервер для обратного SSH-туннелирования, которым могут пользоваться несколько пользователей?

Простите за стену с текстом, я немного новичок, но мои поисковые ресурсы исчерпаны.

Чтобы установить общедоступный IP-адрес для моего локального сервера разработки Django, я настроил микроэкземпляр AWS в качестве сервера для обратного туннелирования SSH. Общедоступный IP-адрес указывает на туннельный сервер, и я создаю обратный туннель с моей локальной машины на туннельный сервер, который пересылает трафик между общедоступным IP-адресом и моей машиной. Вот команда, если вам интересно:

autossh -M 8001:8001 -NR 80:localhost:8000 root@mytunnelserver.com -v

Сейчас я работаю над привлечением другого разработчика, и мне нужно настроить что-то подобное для него. Я мог бы создать клон своей установки (по сути, создав новый туннельный сервер только для него), но это кажется беспорядочным, особенно потому, что мне нужно добавить больше разработчиков в будущем.

Есть ли способ настроить один сервер, который несколько пользователей могут использовать для настройки обратных туннелей SSH, учитывая, что эти пользователи имеют уникальные общедоступные IP-адреса, но перенаправляют одни и те же порты? В принципе, могу ли я и мой партнер использовать один и тот же сервер для обратного SSH-туннелирования, правильно перенаправляя трафик через одни и те же порты для разных общедоступных IP-адресов?

Заранее спасибо и дайте мне знать, если я смогу уточнить.

мы используем это так:

установите локальный скрипт для туннеля (чтобы не вспоминать :)) - например:

_username_local.domain.org.sh_

#!/bin/sh
echo "local: 8080 - remote: 8081"
echo "http://username-local.domain.org/"
ssh root@domain.org -R 8081:localhost:8080 -g

поэтому первый пользователь слушает удаленный порт 8081, второй - 8082 и т. д.

на сервере настройте nginx как обратный прокси, по одному «серверу» на пользователя:

upstream user_1 {
    server localhost:8081 fail_timeout=0;
}
server {
    listen   80;
    server_name username-local.domain.org;
    location / {
        proxy_redirect off;
        proxy_pass   http://user_1;
    }
}

и не забудьте установить создание записей DNS ... (возможно, с подстановочным знаком на * .domain.org)