8

I SSH into a unix server using SSH client version 3.2.9. Several key features do not work when i'm logged into the server. to name few: backspace (^H is made instead but shift+backspace works), when i press <tab> I do not get suggestions, ~ does not take me to home.

I have local.cshrc, local.login and local.profile in my home folder (when I login).

Following is in local.profile

$ more local.profile
#
# Copyright (c) 2001 by Sun Microsystems, Inc.
# All rights reserved.
#
# ident "@(#)local.profile      1.10    01/06/23 SMI"
stty istrip
PATH=/opt/sunone_apps/Dep/POL/:/usr/bin:/usr/ucb:/etc:.


export PATH
2
  • What do you see when you enter echo $TERM when you're on the server? Dec 2, 2009 at 6:42
  • I get vt100 This_is_for_limit
    – Omnipresent
    Dec 2, 2009 at 20:25

6 Answers 6

6

A quick fix is to do:

stty erase <backspace>

Where, you try to hit backspace. Hit enter at the end of that line, and from that point on, the system will recognize that as your backspace character -- but it will only stick for the length of that session.

It's a temporary fix, for when you can't be bothered with logging out, changing the terminal type, and logging back in.

5

Permanent Fix: I have seen such problems before.

Take the backspace for example, the remote host expects some character to be used as "erase/backspace" , while you pressing backspace in the terminal , the terminal program will send some character to the remote host, if what the remote host expects diffs with the characters sent by the terminal program, you would encounter this issue. So a quick fix is as below:

run command #stty -a in the remote host, and find what is expected to be an erase code in the output. Say erase=^?. In the terminal, type Ctrl v and press your backspace. You'll see what code is sent as "erase". Say it is ^H. In the remote host, run #stty erase ^H. You can fix the Tab issue with the same as above.

4

Your issue could be related to a missing terminfo file.

In my case, none of the suggestions here worked. In fact, my terminal was sending ^? to erase (when I pressed backspace), which matched the server's erase character expectation, but I still couldn't erase.

What worked for me was installing my client's terminfo file to the server's terminfo database. Each system has a database of supported terminals, usually in /usr/share/terminfo. Each user in that system may have their own private supported terminal database, usually in ~/.terminfo. If your particular terminal isn't in either database, chances are you're going to run into this issue or possibly others.

To solve,

  1. Produce your client terminal's terminfo file by running infocmp > $TERM.ti. (The filename is actually irrelevant.)
  2. Copy $TERM.ti to the server. (For example, with scp, since you're already using ssh.)
  3. From the server, run tic $TERM.ti from the directory into which you copied $TERM.ti. (This will install your client terminal's terminfo to the server user's terminfo database or to the system's terminfo database if you run the command with superuser privileges.)
  4. Restart your terminal in the server. (Possibly running $0 would work.)
1
  • Thank you, this worked for me, unlike the other answers!
    – xigoi
    Dec 20, 2020 at 21:50
3

Also, Depends on the terminal. On a windows machine, I use MobaXterm which is like a beefy version of Putty. When you create a session (saved or not), you have a "Terminal sttings" tab that has an option to send ctrlH, as backspace. Uncheck this option. You can do this mid-session, without having to restart your session or get out of generating CSR's, etc.

This is also where you can change your terminal type (such as xterm or vt100, etc.).

2

Typically this is caused by your terminal not being recognized on the remote end. If you are connecting to an old Unix or Linux system you may need to change your terminal type to be vt100.

1
  • I had the same problem and this solved it (for now I tried ssh from a plain xterm, vs. my regular urxvt, and backspace worked fine from there)
    – Dalker
    Jun 15, 2013 at 16:12
2

I don't know about "SSH Client 3.2.9", but most SSH clients let you specify whether your backspace key will send ^H (backspace) or ^? (DEL). Your problem is that you're using the latter when you should be using the former.

In Putty, you change this for a saved profile under the profile's keyboard options. Look for a similar configuration option in your client, or switch to Putty.

The suggestion from @oo. regarging stty erase <backspace> will tell your terminal session to expect whatever character your SSH client is sending. Fixing this in your client is a better solution.

Note that in the stty command, you MAY have to prepend the backspace key with a Ctrl-V to "escape" it so that it's dealt with literally. Modern shells (bash/tcsh) will often "accept" a DEL even when Backspace is the erase character, just to make things easier for people.

You must log in to answer this question.