Using Telnet/Ssh to Unix Systems

- Ian! D. Allen idallen@idallen.ca

This section will assist you in making telnet or ssh terminal connections to a Unix/Linux system work properly, especially if you connect to Unix from machines running Microsoft operating systems.  Some (all?) versions of Microsoft's telnet client do not pass on information about the connection to the remote Unix system, leading to problems.

Warning!  If you do not follow the three basic rules in this document, you may lose data on the Unix machine if you try to edit using a full-screen editor (such as vi)!

If you are connecting from Linux to Unix (e.g. from Floppix, Knoppix, or any other Linux distribution to ACADUNIX), you will have fewer problems.  If you connect from Linux to Linux, you shouldn't have any problems at all.

Summary

After reading this document, you will understand the following:
    
	    $ stty -a
	    $ /usr/bin/X11/resize
	    $ TERM=vt100
	    $ export TERM
	    $ stty erase '^H'
	    $ stty erase '^?'
    

Configuring Telnet on Windows and Unix

You need to configure your telnet client and the remote Unix terminal so that full-screen programs such as vi know the size of your telnet window and the type of terminal emulator you are using.  This section should help solve problems and errors such as the following:

ex: 0602-108 unknown is not a recognized terminal type.
ex: 0602-108 linux is not a recognized terminal type.
ex: 0602-108 ANSI is not a recognized terminal type.
ex: 0602-127 Visual mode requires more cursor capability than the terminal provides.
WARNING: terminal is not fully functional
Terminal entry not found in terminfo
'linux' not known. Available builtin terminals are: [...list...]
defaulting to 'ansi'

If you get errors similar to the above, or if vi is not redrawing the screen correctly, read on...

VI/VIM Screen Size Test

Use telnet orssh to connect to the Unix system on which you wish to work. Enter the vi or vim text editor. Type a colon : character to move the cursor to the bottom of the screen. Is the colon on the very last line of the window, with no blank line under it? If not, do not use the editor until you fix your terminal size. The cursor must move to the last line for vi or vim to work properly. See below for how to use the resize command.

Type :q to exit from vim.

Three Basic Rules

You must check these three things every time you connect to Unix:

  1. If you are using a Windows 9x telnet client, make sure your telnet window is dragged out to full size when you use it.  You will know it is full size if both the vertical and horizontal scroll bars are gone.  Drag the bottom right-hand corner of the telnet window outward until both scroll bars are gone.  On Windows 95, you must do this every time you start up telnet.  (Only Microsoft knows why.)
  2. Make sure Unix knows the size of your telnet window after you log in.  (See below.)
  3. Make sure Unix recognizes your terminal type.  (See below.)
Once you start telnet and connect to Unix, do not change the size of your telnet window or the type of terminal emulation you are using.  If you change these things, Unix will not know about the changes, and your session will not display correctly.  Leave the telnet window at full size, and do not change the telnet Buffer Size.

On Windows

After you start telnet and before you type in your login userid and password to the remote Unix system, make sure your telnet session is configured correctly.  Here are the things you must verify in telnet on your Windows machine:

Menu: Terminal | Preferences

Local Echo: Off
Blinking Cursor: your choice
Block Cursor: your choice
VT100 Arrows: On
Emulation: VT100/ANSI
Buffer Size: 24
Fonts: your choice of Courier-style font
Background Color: your choice

Anything marked "your choice" does not have to be changed.  You only need to set these options once and they will be remembered for this computer.  (If you change computers, you will have to reset the options!)

Menu: Connect | Remote System ...

If you use the telnet Connect|RemoteSystem dialog box, make sure you use the following settings:

Host Name: acadunix.algonquincollege.com
Port: telnet
TermType: vt100

Note that the terminal type vt100 is spelled with two lower-case letters followed by the number one hundred.  There are no blanks in or around any of these three fields.  All the letters are lower-case.

You only need to type in the short name acadunix if you are in an Algonquin College Lab or using a College dial-in phone line.  Use the full Internet address (with domain name algonquincollege.com) if you are anywhere else.  (Yes, you can telnet to this Unix machine from anywhere in the world, including from your home or work.)

On Unix (e.g. on acadunix)

On the Unix side of your connection, once you are logged in, you have to make sure of only two things:

  1. The number of lines set in your telnet Buffer Size (in the Terminal|Preferences menu) matches the number of lines that Unix thinks you are using
  2. Your terminal type (set by telnet as you log in) is recognized on Unix

Setting the correct number of lines on Unix

Once you are connected to Unix and have logged in, you need to ensure that Unix knows the size of the telnet terminal window you are using.  If your Windows telnet Buffer Size (in the Terminal|Preferences menu) is set to 24, you may not need to do this (but it won't hurt).  If your Windows telnet Buffer Size is not 24, you may need to do the command below every time you connect to Unix.  (Once you learn how to create a .profile file, you can put these commands into that file for automatic execution every time you log in.)

Use the Unix resize command on Unix to make Unix know the size of your telnet window (the window size is the Windows telnet Buffer Size in the Terminal|Preferences menu).  If just typing resize at the Unix prompt doesn't work (if you get "command not found"), you'll have to type the full absolute Unix pathname of the resize command, /usr/bin/X11/resize, so use whichever command line works:

$ resize

or

$ /usr/bin/X11/resize

Use either of the above Unix command lines.  (It doesn't hurt to type it more than once; but, only once is necessary.)  Note the upper-case letter X followed by the number eleven in the full pathname, and remember to use forward slashes and not backslashes.  What you should see as output after you type the command into Unix is something similar to the following:

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

The number of LINES= may differ for your telnet window.  If you do not see this kind of output using either of the above pathnames, check your typing, then consult a lab monitor or instructor.

To use successfully full-screen commands such as vi on Unix, the number of LINES shown in the output of resize must match the Buffer Size given in the Terminal|Preferences menu of your Windows telnet session.  Make sure that the number of lines is not bigger than your screen!  24 lines is always safe; sometimes you can use 30 or even 50 if you have a big monitor (or are using small Courier fonts).  Start with a telnet Buffer Size of 24.

You can verify the number of lines that Unix thinks your window contains using this command:

$ stty -a
speed 38400 baud; 29 rows; 80 columns
...
Make sure the number of rows is exactly equal to the size of your telnet window.

Setting a recognized Terminal type on Unix

When starting the vi text editor, you may see errors similar to the following:

ex: 0602-108 unknown is not a recognized terminal type.
ex: 0602-108 ANSI is not a recognized terminal type.
ex: 0602-127 Visual mode requires more cursor capability than the terminal provides.

The above errors mean that the terminal type set by telnet for your login session is not recognized on Unix as valid.  Do not attempt to use vi or any other full-screen command if you are getting the above errors.  Full-screen commands need to know what kind of terminal you are using, to be able to draw on your screen correctly.  Fix your terminal type, first.

If you are using a Windows telnet command to connect to Unix, and you get the above errors, you can work around the problem by telling Unix that your terminal type is a vt100.  Here's how you can do this at a Korn shell prompt:

$ TERM=vt100
$ export TERM
The case of the letters is significant, as is the use of spaces.  TERM is upper-case; vt100 is two lower-case letters followed by the number one hundred.  There are no blanks at all in the first line.  There is at least one blank in the second line.

If you always connect to Unix using a vt100-compatible terminal emulator (such as Windows telnet), you can put the above two lines into your login .profile file for automatic execution every time you log in.

Setting the Unix backspace (erase) character

You may find that your backspace key doesn't always work once you are logged in to a Unix system. You may see this:

$ cat >out
This is a good^H^H^H^H

$ cat >out
This is a good^?^?^?^?
    

Unix was designed to handle a wide variety of different terminals that used different backspace key conventions; so, sometimes Unix isn't configured to match your keyboard.

To configure the Unix terminal driver to handle your backspace ("erase") character, use the appropriate stty command. Pick one of the following:

$ stty erase '^?'

or

$ stty erase '^H'

The '^?' argument is in single quotes to protect the characters from the shell. There are two separate characters in the quoted string. You can put this command into your login .profile file to execute every time you log in.