
Мы пытаемся подключиться к службе Linux Telnet с помощью простой терминальной программы. Я подозреваю, что сервер настроен на VT-100 по умолчанию, и сервер Telnet отправляет последовательности управления, ожидая от терминала ответа с поддерживаемыми параметрами, и зависает в ожидании ответа терминала.
(извините за плохое качество изображения)
К сожалению, терминал — это всего лишь голая коммуникационная программа, не знающая о протоколе Telnet.
Есть ли способ указать серверу Telnet (например, установив определенный тип терминала) не начинать идентификацию свойств удаленного терминала, а перейти непосредственно к общению?
Редактировать:
Пожалуйста, отредактируйте вопрос, добавив больше подробностей: Какой терминал вы используете, что это за программа «голой связи»?
Программа связи открывает TCP-соединение с ПК на базе Linux через порт 23, затем отправляет символы, набранные на клавиатуре, и отображает полученные символы на экране без какой-либо обработки символов.
Можно ли запустить netcat на сервере вместо (или в дополнение) telnetd и использовать его для отладки, если сама по себе связь работает?
Я не уверен, я не контролирую обе машины. Но является ли 100% фактом, что машина, на которой запущен терминал, может подключиться к машине linux, а машина linux может отправлять управляющие символы протокола telnet (вы можете видеть это на картинке - белые символы - это 0xff - начальный маркер опции telnet). Я не могу сказать 100%, потому что у меня нет логов Wireshark, но, похоже, связь работает нормально, и это сервер telnet, который не проходит через рукопожатие протокола telnet.
После подключения вы хотите войти в систему или сделать что-то еще? Можете ли вы использовать что-то более безопасное на терминале, например ssh?
Да, я хочу, чтобы сервер telnet отображал "login: " с просьбой войти в систему. Служба telnet на машине linux работает, поскольку можно войти в нее с третьей машины с помощью клиента telnet - но этот клиент telnet знает о протоколе telnet и отвечает на него. В описанном выше случае программа terminal ничего не знает о кодах управления telnet/протоколе и отображает их как символы без каких-либо дальнейших действий (ответ в соответствии с протоколом telnet).
решение1
Прежде всего, согласование telnet не имеет ничего общего с типами терминалов. (Действительно, тип терминала — этоопределенный(во время согласования telnet.) Поэтому вы не можете отключить первое, изменив второе.
Как тыможетотключить его зависит от конкретной реализации telnetd на сервере. (Я насчитал пять различных in.telnetd только на Linux, в других ОС есть свои.)
Иногда существует параметр командной строки telnetd, который можно использовать в конфигурации службы (то есть в файле systemd .service или /etc/inetd).
Если ничего не помогает, вы можете просто скомпилировать свою собственную пропатченную версию telnetd; во всех дистрибутивах Linux есть способ пересобрать пакеты по официальному рецепту (dpkg-buildpackage, makepkg...)