telnetd
DARPA TELNET protocol daemon (UNIX)
Syntax:
telnetd [-debug] [-D (options|report|netstat|ptydata)]
[-h] [-n] [-U] [-46] [port]
Runs on:
QNX Neutrino
Options:
- -4 or -6
- The address family to use for -debug mode. During normal operation (called from inetd), telnetd will use the file descriptor passed from inetd.
- -D modifier
- Print debugging information. You can specify any of the following:
options- Print information about the negotiation of TELNET options.
report- Print the same information as for
options, plus some additional information about what processing is going on. netdata- Display the data stream received by telnetd.
ptydata- Display data written to the pty.
- -debug
- Normally, telnetd is started automatically through inetd; this option lets you start telnetd manually, blocking on port, waiting for a connection.
- -h
- Disable the printing of host-specific information before logging in has been completed.
- -n
- Disable the keepalive option.
- -U
- Refuse connections from addresses that can't be mapped back into a symbolic name.
- port
- The port to use in -debug mode (must come last).
Description:
The telnetd daemon is a server that supports the DARPA-standard TELNET virtual-terminal protocol.
The telnetd daemon is started when inetd receives a service request to connect to the TELNET port (inetd listens for service requests specified in the inetd.conf file at a port defined in the services file).
By specifying the -debug option, you can start up telnetd manually instead of through inetd. If you start telnetd this way, you can use the port argument to run telnetd on an alternate TCP port number.
You can use the -D option for debugging. This option lets telnet print debugging information to the connection, letting you see what telnetd is doing.
The telnetd daemon operates by allocating a pseudo-terminal device for a client, then creating a login process that has the slave side of the pseudo-terminal as standard input, standard output, and standard error. The telnetd daemon manipulates the master side of the pseudo-terminal, implementing the TELNET protocol and passing characters between the remote client and the login process.
When a TELNET session is started up, telnetd sends TELNET options to the client side that indicate a willingness to do remote echoing of characters, to suppress go-ahead, and to do remote flow control, as well as to receive terminal-type information, terminal-speed information, and window-size information from the remote client. If the remote client is willing, the remote terminal type is propagated in the environment of the created login process. The pseudo-terminal allocated to the client is configured to operate in cooked mode, and with XTABS and CRMOD enabled.
The telnetd daemon is willing to do:
- echo
- binary
- suppress go ahead
- timing mark
It's also willing to have the remote client do:
- line mode
- binary
- terminal type
- terminal speed
- window size
- toggle flow control
- environment
- X display location
- suppress go ahead
Name resolving issues
It isn't mandatory for telnetd to have access to name-resolving capabilities. If it does have access to these capabilities, telnetd does a reverse name lookup (IP to hostname) of the telnet client.
If you decide to use a nameserver, make sure that the nameserver configuration is correct. If it isn't, there could be a delay of up to 1.5 minutes a login prompt is returned to the client, while the socket library's name resolver attempts to resolve the IP to a hostname.
Typical configuration for running telnetd on an embedded target
As mentioned before, in a host system environment, you run telnetd by just typing inetd in the command line. If you want to run telnetd on an embedded target, you need to copy the following files to your target:
- the appropriate variant of io-pkt*
- Ethernet driver shared object (i.e., devnp-*.so)
- libsocket.so
- devc-pty for pseudo-tty support. You should use the -n option for this daemon to specify the number of sessions; each telnet session uses one pseudo device.
- ifconfig and route — both these utilities are used to configure your network interface. These utilities could be replaced by dhclient.
- inetd — this daemon is the Internet super-server.
- inetd.conf —
TCP service daemons are listed in this file.
Note that the descriptions in the default inetd.conf file are
commented out; uncomment the ones that you want to use.
The location of inetd and inetd.conf are /usr/sbin, and /etc respectively. If you decide to move inetd.conf to another location, you need to tell inetd in the command line.
Note:The minimal inetd.conf contents to make telnetd work are as follows:inetd.conf = { # Internet services syntax: # <service_name> <socket_type> <proto> <flags> <user> <server_pathname><args> telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd telnet stream tcp6 nowait root /usr/sbin/telnetd telnetd } - telnetd — the location for this is usually /usr/sbin/telnetd. If you move it to another location, modify inetd.conf accordingly.
- /etc/services — maps service names such as telnet to a port number (23).
- /bin/login
You can link login to sh or another binary if you don't want to actually log in, but you must include /etc/passwd if you do want to log in.
- /etc/termcap
- /usr/lib/terminfo
- /bin/sh
- /etc/hosts
or
/etc/nsswitch.conf
or CS_RESOLVE
For more information, see
Name resolving issues,
above.
To configure the interface from a shell prompt, either use ifconfig and route or dhclient. You can then start inetd.
Based on:
RFC 854
Files:
The telnetd daemon requires the libsocket.so shared library.
License:
This utility is based on copyright software of the WIDE project and
of the Regents of the University of California;
for licensing information, see
Licensing information
in Typographical Conventions, Support, and Licensing.
Caveats:
Because of bugs in the original 4.2 BSD telnet, telnetd performs some protocol exchanges to try to discover if the remote client is, in fact, a 4.2 BSD telnet.
Binary mode has no common interpretation except between similar operating systems (UNIX in this case).
The terminal-type name received from the remote client is converted to lowercase.
The telnetd daemon never sends TELNET go-ahead commands.
