У нас є загальнодоступний сервер, який приймає SSH-з'єднання від декількох клієнтів за брандмауерами.
Кожен з цих клієнтів створює зворотний тунель SSH, використовуючи ssh -R
команду зі своїх веб-серверів через порт 80 до нашого загальнодоступного сервера.
Порт призначення (на стороні клієнта) тунелю SSH Reverse становить 80, а вихідний порт (на стороні загального сервера) залежить від користувача. Ми плануємо підтримувати карту адрес портів для кожного користувача.
Наприклад, клієнт A тунелює свій веб-сервер через порт 80 до нашого порту 8000; клієнт B від 80 до 8001; клієнт C від 80 до 8002.
Client A: ssh -R 8000:internal.webserver:80 clienta@publicserver
Client B: ssh -R 8001:internal.webserver:80 clientb@publicserver
Client C: ssh -R 8002:internal.webserver:80 clientc@publicserver
В основному, ми намагаємось зв’язати кожного користувача з портом і не дати їм тунелю до будь-яких інших портів.
Якщо ми використовуємо функцію прямого тунелювання SSH за допомогою ssh -L
, ми можемо дозволити, який порт буде тунельований за допомогою permitopen=host:port
конфігурації. Однак для зворотного тунелю SSH немає еквівалента.
Чи існує спосіб обмеження портів зворотного тунелювання на користувача?