Мне интересно, могу ли / как я реализовать следующую настройку. Похоже, это не соответствует стандартной модели переадресации портов ssh.
У меня есть клиентский компьютер A. У меня есть серверное приложение, работающее на машине A, которое прослушивает порт X. Однако машина A находится за общим IP-адресом (общим для многих пользователей), поэтому он не может принимать входящие соединения на порт. X из Интернета. Однако у меня есть доступ к машине B в Amazon EC2, и было бы нормально, что соединения будут проходить через эту машину. Невозможно переместить приложение на этот компьютер в EC2.
Следовательно, я хочу, чтобы машина B прослушивала порт X и перенаправляла все соединения / сообщения на машину A. Машина A должна видеть это так, как будто клиенты подключаются к порту X обычным способом (было бы приемлемо, чтобы исходный IP отображается как машина B).
Решение должно работать таким образом, чтобы машина A была клиентом, который подключается к машине B. Таким образом, в случае ssh, A должен быть ssh-клиентом, а B - ssh-сервером. Опять же, это связано с тем, что машина A находится за общим IP-адресом, поэтому все соединения должны исходить от A.
Как можно реализовать эту установку? Предпочтительно использовать общедоступное и бесплатное программное обеспечение? Заранее спасибо.
Это можно легко сделать с помощью обратного соединения ssh, запущенного на машине A. В качестве указателя это должно быть полезно.
ssh -R :PortX:127.0.0.1:PortX user@MachineB
Если вы запускаете окна на «Машине А» звон является альтернативой ssh (клиент).
Однако постоянная обратная перемотка портов может быть сложной, но абсолютно возможной.
На «Машине Б» вам необходимо включить
GatewayPorts clientspecified
в sshd_config
РЕДАКТИРОВАТЬ: