Вместо этого сделайте сеанс входа SSH перенаправленным на интерактивный telnet на localhost - PullRequest
1 голос
/ 22 декабря 2009

Я занимаюсь разработкой системы с интерактивной консолью управления telnet. Требования требуют, чтобы мы отключили доступ через Telnet и добавили SSH. Превращение консоли управления в автономную программу, которую мы можем использовать для входа по SSH, потребует участия поставщика. Я думал о менее дорогом решении, которое было бы что-то вроде этого:

  1. Заблокируйте консоль управления telnet от внешнего доступа, но оставьте ее доступной для локальных подключений.

  2. Напишите оболочку входа в систему (на C ++ или, может быть, что-нибудь столь же простое, как this , если мне повезет), которая действует как прокси. Оболочка входа в систему отправит telnet на локальный хост и отправит все команды, полученные от пользователя через telnet, и отправит все дисплеи и запросы, полученные от сервера telnet, обратно пользователю.

  3. Измените / etc / passwd для запуска этой прокси-оболочки при входе пользователя через ssh.

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

1 Ответ

4 голосов
/ 22 декабря 2009

Ограничение Telnet локальными подключениями звучит как хороший план, особенно если вы не хотите трогать код. Шаги 2 и 3 не нужны, хотя. Вы можете просто вызвать команду "telnet" в удаленной оболочке, как только вы установили соединение. Это можно сделать автоматически, создав скрипт .ssh / rc в домашнем каталоге пользователя.

НО, одна потенциальная проблема этого подхода заключается в том, что управляющие последовательности Telnet могут проходить неправильно. Таким образом, альтернативой является туннелирование соединения Telnet через безопасное соединение SSH с использованием переадресации портов. Используя эту стратегию, вы продолжите запуск Telnet на своем клиенте и сервере, но соединение зашифровано с использованием SSH. Чтобы настроить это, вызовите SSH-клиент следующим образом:

ssh -L 23:localhost:23 user@host

Заменить "user @ host" на пользователя / хост сервера SSH. В результате выполнения этой команды будет открыт порт 23 (telnet) на поле client . И сделанные подключения будут перенаправлены на порт 23 на сервере через SSH. Итак, на вашем клиенте вы должны подключиться к локальному хосту через Telnet, и соединение будет перенаправлено на сервер Telnet, работающий в том же окне, что и демон SSH.

Обратите внимание, что вы можете изменить первые «23» на что-то другое (например, 1123), если настройки безопасности на клиенте не позволяют использовать там порт 23. В этом случае вы должны указать клиенту Telnet на localhost: 1123 или что-то еще, и он будет перенаправлен на порт 23 в удаленной системе. В журнале Red Hat есть хорошее руководство по использованию переадресации портов SSH для подобных случаев использования.

...