Сервис протокола TELNET DARPA (UNIX)
telnetd [-4 | -6] [-debug [порт]] [-D модификатор] [-n]
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, mips, ppc, x86
![]() | Для запуска этого сервера пользователю необходимо войти в систему с учетной записью root. |
Сервис telnetd – это сервер, поддерживающий протокол виртуального терминала TELNET, соответствующий стандарту DARPA.
Сервис telnetd запускается после получения сервисом inetd запроса службы на подключение к порту TELNET (сервис inetd прослушивает запросы служб, указанные в файле inetd.conf, на порте, определенном в файле services).
С помощью опции -debug сервис telnetd можно запустить вручную, а не из inetd. При таком способе запуска сервиса telnetd можно использовать аргумент порт для выполнения сервиса telnetd на порте с альтернативным номером TCP.
Для отладки используется опция -D. Если указана эта опция, сервис telnet выводит отладочную информацию через соединение, что позволяет просматривать данные о работе сервиса telnetd.
Работа сервиса telnetd состоит в выделении устройства псевдотерминала для клиента, последующем создании процесса входа в систему, для которого в качестве стандартного потока ввода, стандартного потока вывода и стандартного потока ошибок используется подчиненная сторона псевдотерминала. Сервис telnetd управляет основной стороной псевдотерминала путем реализации протокола TELNET и передачи символов между удаленным клиентом и процессом входа в систему.
![]() | Получение сообщения о том, что все сетевые порты заняты, означает, что либо исчерпано количество псевдоустройств, либо не запущен сервис devc-pty. Сервис telnetd учитывает устройства псевдотерминалов только с именами /dev/pty[pqrs][0-f] вне зависимости от количества других созданных устройств псевдотерминалов. |
При открытии сеанса TELNET сервис telnetd передает на сторону клиента опции TELNET, свидетельствующие о готовности к удаленному выводу символов, подавлению продолжения и реализации удаленного управления обменом данными, а также получению информации о типе терминала, скорости передачи данных терминала и размере окна от удаленного клиента. В случае готовности удаленного клиента данные о типе удаленного терминала передаются в среду созданного процесса входа в систему. Псевдотерминал, назначенный для клиента, настраивается для работы в режиме с обработкой с включением режимов XTABS и CRMOD.
Сервиса telnetd готов к выполнению следующих команд:
А также – к выполнению следующих команд на стороне удаленного клиента:
Проблемы разрешения имен
Для сервиса telnetd необязательно наличие доступа к функциям разрешения имен. В случае отсутствия доступа к этим функциям сервис telnetd выполняет обратный поиск имени клиента Telnet (поиск имени хоста по IP-адресу).
В случае использования сервера имен следует убедиться в корректности его конфигурации. Если конфигурация некорректна, может возникнуть задержка при возврате клиенту приглашения на вход в систему продолжительностью до 1,5 минут, пока преобразователь имен библиотеки сокетов осуществляет попытку разрешения IP-адреса в имя хоста.
Типовая конфигурация для выполнения telnetd во встраиваемой целевой системе
Как было указано выше, для выполнения сервиса telnetd в среде системы хоста следует просто ввести команду inetd в командной строке. При необходимости выполнения сервиса telnetd во встраиваемой целевой системе следует скопировать в целевую систему следующие файлы:
Сервис inetd и файл inetd.conf находятся в каталоге /usr/sbin
и каталоге /etc
, соответственно. В случае перемещения файла inetd.conf в другой каталог следует указать inetd в командной строке.
![]() | Минимальный набор данных, содержащихся в файле inetd.conf, для обеспечения корректного функционирования сервиса telnetd:
inetd.conf = { # Синтаксис интернет-служб: # <имя_службы> <тип_сокета> <протокол> <флаги> <пользователь> <путь_к_серверу><аргументы> telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd } |
/usr/sbin/telnetd
. В случае перемещения сервиса в другой каталог следует внести соответствующие изменения в файл inetd.conf. /bin/login
— при отсутствии необходимости входа в систему команду login можно связать с sh или с другим исполняемым файлом, но в этом случае также следует добавить /etc/passwd
. /etc/termcap
/usr/lib/terminfo
/bin/sh
/etc/nsswitch.conf
, или CS_RESOLVE
— Для получения дополнительной информации см. раздел "Проблемы разрешения имен" выше. Для конфигурирования интерфейса через приглашение командного интерпретатора следует использовать либо утилиты ifconfig и route, либо dhcp.client. После этого можно запустить сервис inetd.
В виду наличия ошибок в исходной утилите telnet из пакета BSD версии 4.2 сервис telnetd выполняет обмен некоторыми данными по протоколу для получения подтверждения того, что удаленным клиентом действительно ялвяется Telnet версии 4.2 BSD.
Для двоичного режима не предусмотрено единой интерпретации, за исключением случаев его реализации между одинаковыми операционными системами (в данном случае UNIX).
Имя типа терминала, получаемое от удаленного клиента, преобразуется в символы нижнего регистра.
Сервис telnetd не передает команды TELNET Go Ahead.
Базовые подсистемы ЗОСРВ «Нейтрино», UNIX, NetBSD
ЗОСРВ
«Нейтрино»
редакции 2020
сервер обновлен до версии NetBSD 9.0 /etc/hosts, ifconfig, inetd, inetd.conf, login, /etc/resolv.conf, route, /etc/services, sh, telnet
Предыдущий раздел: Сервисы