4

Я пытаюсь настроить несколько клиентских ПК, которые находятся за брандмауэром с динамическими IP-адресами, чтобы SSH-соединение было доступно для другого ПК.

Моя теория состоит в том, чтобы настроить сервер с общедоступным и статическим IP-адресом, который будет действовать как сервер SSH. Клиенты инициируют обратные соединения SSH. Когда требуется соединение от другого (контролерского) клиента, клиент подключается к серверу, и сервер исправляет / туннелирует это соединение с нужным удаленным клиентом.

Как этого можно достичь? Есть ли термин для этого? Есть ли другое решение этой проблемы?


редактировать: добавлена схема

Я надеюсь, что это проясняет это. Я также нашел эту статью, которая обсуждает это немного больше, но не с несколькими клиентами. http://toic.org/blog/2009/reverse-ssh-port-forwarding/

1 ответ1

3

Я не думаю, что есть простой способ сделать это в массовом масштабе. И вы на самом деле не упоминаете объем этих соединений SSH. Терминал только? Может сделать все немного проще.

Запустите ssh -NR 2210:localhost:22 intermediaryuser@intermediary.remote.machine.tld someuser качестве пользователя на компьютере за брандмауэром. Я предполагаю, что 2210 доступен на промежуточной машине; если это не так, выберите другой порт. Каждой машине, к которой вы хотите получить доступ за брандмауэром, потребуется собственный порт.

Вашему интернет-пользователю, подключающемуся к посреднику, нужен ssh-доступ на посреднике. Чтобы получить доступ к брандмауэру, просто выполните ssh -t intermediaryuser@intermediary.remote.machine.tld "ssh someuser@localhost -p 2210" чтобы получить доступ к терминалу. Вам нужно будет сделать то же самое на разных портах для каждого сервера.

Вы можете демонизировать эту первую часть, чтобы она происходила при загрузке. Я не знаю лучшего способа, скажем, облегчить управление двумя наборами логинов, паролей и т.д. Вы можете создавать логины без пароля на основе ключей ssh, но это займет время для настройки и должно быть сделано для каждого пользователя.

Если терминал работает только для вас ...

Я создал небольшой скрипт на Perl, который будет действовать как оболочка для входа в систему для пользователя с именем sshcatcher. Я сохранил его в /usr/local/remote.pl:

#!/bin/perl

print "Please enter your username to access the firewalled server: ";
$user = <>;

chomp($user);

system("ssh", "$user\@localhost -p 2210");

С чем-то подобным, возможно, вы можете позволить учетной записи с пустым паролем посреднику немного автоматизировать процесс.

Запись vipw выглядит так: sshcatcher:x:2000:2000::/home/sshcatcher:/usr/local/remote.pl

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .