Мы пытаемся подключиться к службе 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 и отвечает на него. В описанном выше случае программа temrinal ничего не знает о кодах / протоколах управления telnet и отображает их в виде символов без каких-либо дальнейших действий (ответ согласно протоколу telnet).

1 ответ1

1

Прежде всего, согласование telnet не имеет ничего общего с типами терминалов. (Действительно, тип терминала определяется во время согласования telnet.) Таким образом, вы не можете отключить первое, изменив второе.

То, как вы можете отключить его, зависит от конкретной реализации telnetd на сервере. (Я насчитал пять разных in.telnetds только для Linux, у других ОС есть свои.)

Иногда существует параметр командной строки telnetd, который вы можете использовать в конфигурации службы (то есть в файле systemd .service или /etc /inetd).

Если ничего не получается, вы можете просто скомпилировать свою собственную исправленную версию telnetd; во всех дистрибутивах Linux есть способ перекомпилировать пакеты по официальному рецепту (dpkg-buildpackage, makepkg ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .