Я могу принимать обратные SSH-соединения из нескольких удаленных систем на одном сервере, используя порт для каждого соединения:
Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22
Remote B: ssh -fN -R5001:localhost:22 user@server-ip -p22
Remote C: ssh -fN -R5002:localhost:22 user@server-ip -p22
Я могу получить доступ к этим системам из моего локального клиента по мере необходимости:
Access Remote A: ssh root@server-ip -p5000
Access Remote B: ssh root@server-ip -p5001
Для этого требуется переадресация одного порта для каждой удаленной системы на сервере. Когда подключается более 100 пультов, есть ли у меня какие-либо варианты, кроме открытия более 100 портов в брандмауэре сервера и статического назначения каждого пульта на порт, как указано выше? Моя цель - включить несколько пультов дистанционного управления для создания туннелей по запросу, где я могу запросить, кто подключен.
Я обнаружил, что sslh - это мультиплексор, который может различать трафик на одном порту на основе протокола, но это относится только к различным протоколам, например. ssl / ssh. Есть ли решение, позволяющее использовать несколько туннелей на одном порту?
Пример:
Remote A: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier abc123
Remote B: ssh -fN -R5000:localhost:22 user@server-ip -p22 -identifier def456
access Remote A: ssh root@server-ip -p5000 -identifier abc123
access Remote B: ssh root@server-ip -p5000 -identifier def456
У меня та же проблема, что и у вас, и к тому времени я пришел только к одному возможному ответу. Мой сценарий немного отличается от вашего, поскольку мне нужен только один активный туннель ssh, но все клиенты должны быть готовы к подключению в случае необходимости.
Я предполагаю, что можно создать простой протокол клиент / сервер для обработки всех клиентов и создания какого-то списка. Затем пользователь мог выбрать одного из клиентов для создания обратного туннеля. Для этого потребуется другой открытый порт, а не ssh-сервер, но, используя поточный сервер, можно будет прослушивать () различных клиентов под одним и тем же портом для этого вторичного протокола.
Я все еще работаю над решением (я, вероятно, реализую то, что только что написал), но имейте в виду, что в вашем случае вы должны определить максимальное количество клиентов, подключенных одновременно, и настроить это количество портов. Поскольку у меня всего лишь небольшая «поддержка» Linux для встраиваемых устройств, я все равно могу работать только с одним устройством за раз, поэтому мне нужно только одно устройство.
Более разумной идеей было бы сообщить клиенту по протоколу aux, к какому порту сервера следует подключить обратный туннель.