У меня есть клиент-серверное приложение, которое работает через telnet-соединение и не поддерживает SSH. Обычно клиент открывает соединение Telnet с сервером, который запускает определенную оболочку, и клиент отправляет команды через соединение Telnet этой оболочке. Проблема в том, что мне нужно выполнить эту работу через ssh-соединение, а на удаленном сервере нет telnet-служб, поэтому я не могу использовать туннель через ssh-соединение. Мне нужен какой-то эмулятор telnet, который будет предлагать конечную точку telnet клиенту при подключении через ssh к серверу. Есть какой-либо способ сделать это?
Спасибо
Это нормальный случай для переадресации портов по ssh.
Сервер <ip>
Открыта конечная точка ssh и сервер приложений прослушивает порт 23 Telnet.
У клиента есть клиент приложения, который должен подключиться к <ip>:23
. Также клиент ничего не слушает на порту 23.
Установим проброс портов от сервера к клиенту:
ssh -N -L 23:127.0.0.1:23 user@<ip> >/dev/null 2>&1 &
Мы тут:
<ip>
как пользователь user
;Теперь клиент приложения должен подключиться к адресу 127.0.0.1:23
для работы с сервером приложений.
Согласно пояснениям, у нас есть клиентское программное обеспечение, поддерживающее только Telnet, и сервер, поддерживающий только ssh. И клиент должен иметь доступ к серверу.
Как оказалось, такое решение действительно существует. Из руководство:
SSH / Telnet шлюз
В Telnet-DeleGate (сервер DeleGate для клиентов Telnet) - имя хоста с префиксом "-ssh" и "." (как "-ssh.host") подразумевает SSH-сервер на хосте. При доступе к такому серверу Telnet-DeleGate работает как шлюз между SSH-сервером и клиентом Telnet. Например, используя Telnet-DeleGate, настроенный следующим образом, клиенты Telnet могут войти на SSH-сервер на хосте как пользователь следующим образом:
% delegated -P8023 SERVER=telnet://-ssh % telnet -l user@host localhost 8023
Встреча DeleGate