|
Home | Switchboard | Unix Administration | Red Hat | TCP/IP Networks | Neoliberalism | Toxic Managers |
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and bastardization of classic Unix |
News | Tutorials | Recommended Links | RFCs | Windows Clients |
Teraterm | HyperTerminal | Exceed HostExplorer | Humor | Etc |
|
Telnet is an old protocol that with ssh available probably outlived its usefulness. Still it is widely used.
|
Currently Teraterm is probably the best client for Windows environment. It one of the few that understands middle mouse button and have some macro capabilities. The product has non-intuitive configuration and there is no history of visited sites. but generally functionality is very good. See special page devoted to it.
Please note that many poor soils reinvent the bicycle in a form of yet another macro language for terminal emulation. Expect is a more universal and often more powerful way of doing the same that frees you from the dependency of somebody design mistakes and the luck of understanding of compiler/interpreter technology .
The telnet command is occasionally used to automate connections to systems in situations in which the rlogin and rsh commands cannot be used. Automating a telnet connection requires the script to pass the login, password, and command to the telnet command to execute. The following is a Korn shell script fragment that automates the telnet session:
( sleep 2 echo login^M sleep 2 echo password^M sleep 2 echo command^M sleep 2 ) | telnet hostname
The Telnet protocol is often thought of as simply providing a facility for remote logins to computer via the Internet. This was its original purpose although it can be used for many other purposes.
It is best understood in the context of a user with a simple terminal using the local telnet program (known as the client program) to run a login session on a remote computer where his communications needs are handled by a telnet server program. It should be emphasized that the telnet server can pass on the data it has received from the client to many other types of process including a remote login server. It is described in RFC854 and was first published in 1983.
Communication is established using the TCP/IP protocols and communication is based on a set of facilities known as a Network Virtual Terminal (NVT). At the user or client end the telnet client program is responsible for mapping incoming NVT codes to the actual codes needed to operate the user's display device and is also responsible for mapping user generated keyboard sequences into NVT sequences.
The NVT uses 7 bit codes for characters, the display device, referred to as a printer in the RFC, is only required to display the "standard" printing ASCII characters represented by 7 bit codes and to recognise and process certain control codes. The 7 bit characters are transmitted as 8 bit bytes with most significant bit set to zero. An end-of-line is transmitted as the character sequence CR (carriage return) followed by LF (line feed). If it is desired to transmit an actual carriage return this is transmitted as a carriage return followed by a NUL (all bits zero) character.
NVT ASCII is used by many other Internet protocols.
The following control codes are required to be understood by the Network Virtual Terminal.
Name | code | Decimal Value | Function |
---|---|---|---|
NULL | NUL | 0 | No operation |
Line Feed | LF | 10 | Moves the printer to the next print line, keeping the same horizontal position. |
Carriage Return | CR | 13 | Moves the printer to the left margin of the current line. |
The following further control codes are optional but should have the indicated defined effect on the display.
Name | code | Decimal Value | Function |
---|---|---|---|
BELL | BEL | 7 | Produces an audible or visible signal (which does NOT move the print head. |
Back Space | BS | 8 | Moves the print head one character position towards the left margin. [On a printing devices this mechanism was commonly used to form composite characters by printing two basic characters on top of each other.] |
Horizontal Tab | HT | 9 | Moves the printer to the next horizontal tab stop. It remains unspecified how either party determines or establishes where such tab stops are located. |
Vertical Tab | VT | 11 | Moves the printer to the next vertical tab stop. It remains unspecified how either party determines or establishes where such tab stops are located. |
Form Feed | FF | 12 | Moves the printer to the top of the next page, keeping the same horizontal position. [On visual displays this commonly clears the screen and moves the cursor to the top left corner.] |
The NVT keyboard is specified as being capable of generating all 128 ASCII codes by using keys, key combinations or key sequences.
The telnet protocol also specifies various commands that control the method and various details of the interaction between the client and server. These commands are incorporated within the data stream. The commands are distinguished by the use of various characters with the most significant bit set. Commands are always introduced by a character with the decimal code 255 known as an Interpret as command (IAC) character. The complete set of special characters is
Name | Decimal Code | Meaning |
---|---|---|
SE | 240 | End of subnegotiation parameters. |
NOP | 241 | No operation |
DM | 242 | Data mark. Indicates the position of a Synch event within the data stream. This should always be accompanied by a TCP urgent notification. |
BRK | 243 | Break. Indicates that the "break" or "attention" key was hit. |
IP | 244 | Suspend, interrupt or abort the process to which the NVT is connected. |
AO | 245 | Abort output. Allows the current process to run to completion but do not send its output to the user. |
AYT | 246 | Are you there. Send back to the NVT some visible evidence that the AYT was received. |
EC | 247 | Erase character. The receiver should delete the last preceding undeleted character from the data stream. |
EL | 248 | Erase line. Delete characters from the data stream back to but not including the previous CRLF. |
GA | 249 | Go ahead. Used, under certain circumstances, to tell the other end that it can transmit. |
SB | 250 | Subnegotiation of the indicated option follows. |
WILL | 251 | Indicates the desire to begin performing, or confirmation that you are now performing, the indicated option. |
WONT | 252 | Indicates the refusal to perform, or continue performing, the indicated option. |
DO | 253 | Indicates the request that the other party perform, or confirmation that you are expecting the other party to perform, the indicated option. |
DONT | 254 | Indicates the demand that the other party stop performing, or confirmation that you are no longer expecting the other party to perform, the indicated option. |
IAC | 255 | Interpret as command |
There are a variety of options that can be negotiated between a telnet client and server using commands at any stage during the connection. They are described in detail in separate RFCs. The following are the most important.
Decimal code | Name | RFC |
---|---|---|
1 | echo | 857 |
3 | suppress go ahead | 858 |
5 | status | 859 |
6 | timing mark | 860 |
24 | terminal type | 1091 |
31 | window size | 1073 |
32 | terminal speed | 1079 |
33 | remote flow control | 1372 |
34 | linemode | 1184 |
36 | environment variables | 1408 |
Options are agreed by a process of negotiation which results in the client and server having a common view of various extra capabilities that affect the interchange and the operation of applications.
Either end of a telnet dialogue can enable or disable an option either locally or remotely. The initiator sends a 3 byte command of the form
IAC,<type of operation>,<option>
The following patterns of option negotiation are defined.
Sender Sent | Receiver Responds | Implication |
---|---|---|
WILL | DO | The sender would like to use a certain option if the receiver can handle it. The receiver says it can support the option. Option is now in effect |
WILL | DONT | The sender would like to use a certain option if the receiver can handle it. The receiver says it cannot support the option. Option is not in effect. |
DO | WILL | The sender requests that the receiver use a certain option. The receiver says it can support the option. Option is now in effect. |
DO | WONT | The sender requests that the receiver use a certain option. The receiver says it cannot support the option. Option is not in effect. |
WONT | DONT | The sender will not use a certain option. Option disabled. DONT is only valid response. |
DONT | WONT | The sender requests that the receiver does not use a certain option. Option disabled. WONT is only valid response. |
For example if the sender wants the other end to suppress go-ahead it would send the byte sequence
255(IAC),251(WILL),3The final byte of the three byte sequence identifies the required action.
For some of the negotiable options values need to be communicated once support of the option has been agreed. This is done using sub-option negotiation. Values are communicated via an exchange of value query commands and responses in the following form.
IAC,SB,<option code number>,1,IAC,SE
and
IAC,SB,<option code>,0,<value>,IAC,SE
For example if the client wishes to identify the terminal type to the server the following exchange might take place
Client 255(IAC),251(WILL),24 Server 255(IAC),253(DO),24 Server 255(IAC),250(SB),24,1,255(IAC),240(SE) Client 255(IAC),250(SB),24,0,'V','T','2','2','0',255(IAC),240(SE)The first exchange establishes that terminal type (option number 24) will be handled, the server then enquires of the client what value it wishes to associate with the terminal type. The sequence SB,24,1 implies sub-option negotiation for option type 24, value required (1). The IAC,SE sequence indicates the end of this request. The repsonse IAC,SB,24,0,'V'... implies sub-option negotiation for option type 24, value supplied (0), the IAC,SE sequence indicates the end of the response (and the supplied value).
The encoding of the value is specific to the option but a sequence of characters, as shown above, is common.
Many of those listed are self-evident, but some call for more comments.
The original telnet implementation defaulted to "half duplex" operation. This means that data traffic could only go in one direction at a time and specific action is required to indicate the end of traffic in one direction and that traffic may now start in the other direction. [This similar to the use of "roger" and "over" by amateur and CB radio operators.] The specific action is the inclusion of a GA character in the data stream.
Modern links normally allow bi-directional operation and the "suppress go ahead" option is enabled.
The echo option is enabled, usually by the server, to indicate that the server will echo every character it receives. A combination of "suppress go ahead" and "echo" is called character at a time mode meaning that each character is separately transmitted and echoed.
There is an understanding known as kludge line mode which means that if either "suppress go ahead" or "echo" is enabled but not both then telnet operates in line at a time mode meaning that complete lines are assembled at each end and transmitted in one "go".
This option replaces and supersedes the line mode kludge.
This option controls where the special flow control effects of Ctrl-S/Ctrl-Q are implemented.
The telnet protocol includes a number of control functions. These are initiated in response to conditions detected by the client (usually certain special keys or key combinations) or server. The detected condition causes a special character to be incorporated in the data stream.
This is used by the client to cause the suspension or termination of the server process. Typically the user types Ctrl-C on the keyboard. An IP (244) character is included in the data stream.
This is used to suppress the transmission of remote process output. An AO (238) character is included in the data stream.
This is used to trigger a visible response from the other end to confirm the operation of the link and the remote process. An AYT (246) character is incorporated in the data stream.
Sent to the display to tell it to delete the immediately preceding character from the display. An EC (247) character is incorporated in the data stream.
Causes the deletion of the current line of input. An EL (248) character is incorporated in the data stream.
Some control functions such as AO and IP require immediate action and this may cause difficulties if data is held in buffers awaiting input requests from a (possibly misbehaving) remote process. To overcome this problem a DM (242) character is sent in a TCP Urgent segment, this tells the receiver to examine the data stream for "interesting" characters such as IP, AO and AYT. This is known as the telnet synch mechanism.
A DM not in a TCP Urgent segment has no effect.
telnet
commandOn most Unix systems a telnet session can be initiated using the telnet command. Most users simply type
telnet <remote host>but if the user just types telnet then various options and subcommands are available which can be used to study the behaviour of the session.
Here's an exmaple of a telnet session from scitsc
to
ccub
bash$ telnet telnet> toggle options Will show option processing. telnet> open ccub Trying 134.220.1.20 ... Connected to ccub.wlv.ac.uk. Escape character is '^]'. SENT do SUPPRESS GO AHEAD SENT will TERMINAL TYPE (reply) RCVD do TERMINAL TYPE (don't reply) RCVD will SUPPRESS GO AHEAD (don't reply) RCVD will ECHO (reply) SENT do ECHO (reply) RCVD do ECHO (reply) SENT wont ECHO (reply) UNIX(r) System V Release 4.0 (ccub) RCVD dont ECHO (don't reply) login: Login timed out after 60 seconds Connection closed by foreign host.
These pages were produced to support a communication systems module that is no longer taught. Further communication systems notes are available on-line.
Author : Peter Burden
|
Switchboard | ||||
Latest | |||||
Past week | |||||
Past month |
Jan 14, 2018 | bash-prompt.net
Telnet, the protocol and the command line tool, were how system administrators used to log into remote servers. However, due to the fact that there is no encryption all communication, including passwords, are sent in plaintext meant that Telnet was abandoned in favour of SSH almost as soon as SSH was created.
For the purposes of logging into a remote server, you should never, and probably have never considered it. This does not mean that the
telnet
command is not a very useful tool when used for debugging remote connection problems.In this guide, we will explore using
telnet
to answer the all too common question, "Why can't I ###### connect‽".This frustrated question is usually encountered after installing a application server like a web server, an email server, an ssh server, a Samba server etc, and for some reason, the client won't connect to the server.
telnet
isn't going to solve your problem but it will, very quickly, narrow down where you need to start looking to fix your problem.
telnet
is a very simple command to use for debugging network related issues and has the syntax:telnet <hostname or IP> <port>Because
telnet
will initially simply establish a connection to the port without sending any data it can be used with almost any protocol including encrypted protocols.There are four main errors that you will encounter when trying to connect to a problem server. We will look at all four, explore what they mean and look at how you should fix them.
For this guide we will assume that we have just installed a Samba server at
Error 1 - The connection that hangs foreversamba.example.com
and we can't get a local client to connect to the server.First, we need to attempt to connect to the Samba server with
telnet
. This is done with the following command (Samba listens on port 445):telnet samba.example.com 445Sometimes, the connection will get to this point stop and hang indefinitely:
telnet samba.example.com 445 Trying 172.31.25.31...This means that
telnet
has not received any response to its request to establish a connection. This can happen for two reasons:
- There is a router down between you and the server.
- There is a firewall dropping your request.
In order to rule out 1. run a quick
mtr samba.example.com
to the server. If the server is accessible then it's a firewall (note: it's almost always a firewall).Firstly, check if there are any firewall rules on the server itself with the following command
iptables -L -v -n
, if there are none then you will get the following output:iptables -L -v -n Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destinationIf you see anything else then this is likely the problem. In order to check, stop
Error 2 - DNS problemsiptables
for a moment and runtelnet samba.example.com 445
again and see if you can connect. If you still can't connect see if your provider and/or office has a firewall in place that is blocking you.A DNS issue will occur if the hostname you are using does not resolve to an IP address. The error that you will see is as follows:
telnet samba.example.com 445 Server lookup failure: samba.example.com:445, Name or service not knownThe first step here is to substitute the IP address of the server for the hostname. If you can connect to the IP but not the hostname then the problem is the hostname.
This can happen for many reasons (I have seen all of the following):
- Is the domain registered? Use
whois
to find out if it is.- Is the domain expired? Use
whois
to find out if it is.- Are you using the correct hostname? Use
dig
orhost
to ensure that the hostname you are using resolves to the correct IP.- Is your A record correct? Check that you didn't accidentally create an A record for something like
smaba.example.com
.Always double check the spelling and the correct hostname (is it
Error 3 - The server isn't listening on that portsamba.example.com
orsamba1.example.com
) as this will often trip you up especially with long, complicated or foreign hostnames.This error occurs when
telnet
is able to reach to the server but there is nothing listening on the port you specified. The error looks like this:telnet samba.example.com 445 Trying 172.31.25.31... telnet: Unable to connect to remote host: Connection refusedThis can happen for a couple of reasons:
Error 4 - The connection was closed by the server
- Are you sure you're connecting to the right server?
- Your application server is not listening on the port you think it is. Check exactly what it's doing by running
netstat -plunt
on the server and see what port it is, in fact, listening on.- The application server isn't running. This can happen when the application server exits immediately and silently after you start it. Start the server and run
ps auxf
orsystemctl status application.service
to check it's running.This error happens when the connection was successful but the application server has a built in security measure that killed the connection as soon as it was made. This error looks like:
telnet samba.example.com 445 Trying 172.31.25.31... Connected to samba.example.com. Escape character is '^]'. Connection closed by foreign host.The last line
A successful connectionConnection closed by foreign host.
indicates that the connection was actively terminated by the server. In order to fix this, you need to look at the security configuration of the application server to ensure your IP or user is allowed to connect to it.This is what a successful
telnet
connection attempt looks like:telnet samba.example.com 445 Trying 172.31.25.31... Connected to samba.example.com. Escape character is '^]'.The connection will stay open for a while depending on the timeout of the application server you are connected to.
A telnet connection is closed by typing
CTRL+]
and then when you see thetelnet>
prompt, type "quit" and hit ENTER i.e.:telnet samba.example.com 445 Trying 172.31.25.31... Connected to samba.example.com. Escape character is '^]'. ^] telnet> quit Connection closed.ConclusionThere are a lot of reasons that a client application can't connect to a server. The exact reason can be difficult to establish especially when the client is a GUI that offers little or no error information. Using
telnet
and observing the output will allow you to very rapidly narrow down where the problem lies and save you a whole lot of time.
When you use the Solaris telnet command to log in from one site to another, don't forget that you can enter telnet's command mode at any time during your session, usually by entering the following key sequence:
[CTRL] ] (the control key and right-bracket key at the same time)
When this is successful, you'll see the following prompt:
telnet>
Then, from the "telnet>" prompt, enter "?" to learn more about the available telnet commands. A few commands that will give you more help at the prompt are shown below:
display displays many current Telnet settings
send ? displays commands you can "send" to the remote site
set ? displays variables that can be setOne of my favorites (mostly when fooling around) is:
send ayt
which means "send this message: are you there?".
ShellTelnet is a Windows telnet client intended for use with a Unix/Linux shell account.
In addition to the classic telnet functionality, ShellTellnet introduces a new way of browsing Unix hosts. ShellTelnet allows the user to browse files and folders on a remote machine using the Windows Explorer interface.
ShellTelnet includes a hidden FTP client. It makes possible to transfer files without a use of slow and archaic utilities like Kermit and zmodem.
To use ShellTelnet you need a local Windows machine and a remote machine running Unix or Linux. It is assumed that the default shell on the remote machine is BASH.
Google matched content |
Telnet - Focus on Windows NT - Net Links
NONAGS 32bit Telnet & Terminal Clients
Society
Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers : Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism : The Iron Law of Oligarchy : Libertarian Philosophy
Quotes
War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda : SE quotes : Language Design and Programming Quotes : Random IT-related quotes : Somerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose Bierce : Bernard Shaw : Mark Twain Quotes
Bulletin:
Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 : Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law
History:
Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds : Larry Wall : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOS : Programming Languages History : PL/1 : Simula 67 : C : History of GCC development : Scripting Languages : Perl history : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history
Classic books:
The Peter Principle : Parkinson Law : 1984 : The Mythical Man-Month : How to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater�s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite
Most popular humor pages:
Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor
The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D
Copyright � 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.
This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...
|
You can use PayPal to to buy a cup of coffee for authors of this site |
Disclaimer:
The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.
Last modified: January, 15, 2018