터미널에서 백 스페이스, 탭, Del 및 화살표 키가 작동하지 않음 (ssh 사용)


44

내 계정으로 sudo 권한을 가진 다른 Ubuntu 시스템에 ssh를 넣을 때 백 스페이스 키를 누르면 어색한 기호가 생성됩니다. 또한 Tab, Del 및 Arrow 키가 작동하지 않습니다.

다른 한편으로, 나는 또한 같은 컴퓨터에 다른 계정을 가지고 있으며이 계정을 ssh하면 터미널이 완벽하게 작동합니다. 왜 이런 일이 일어나는지 알 수 없었습니다.


같은 문제가 있습니다-호스트는 Win7-64이고 원격 게스트 시스템은 모두 Ubuntu Server 10.04입니다. 한 서버에서는 키가 작동하지만 다른 서버에서는 작동하지 않습니다.
Mateng

추가 정보 : 저는 Putty / Kitty를 사용하여 원격 컴퓨터에 들어갑니다
Mateng

다른 프로그램을 통해 ssh를 시도하거나 대상 시스템에 대한 새 프로파일을 작성할 수 있습니까?
belacqua

나는 cygwin (7 승리)에도 문제에 직면했다
gopi1410

이것이 발생하면 echo "$ TERM" 을 입력하면 무엇이 반환 됩니까?
david6

답변:


32

편집 : 참조 : Mateng의 답변

Mateng은 아마도 Bourne Shell을 실행하고 있다고 생각합니다. 그러나 /etc/passwd파일을 직접 편집해서는 안됩니다 . chsh대신 명령을 사용해보십시오 .

chsh -s /bin/bash

-s 플래그는 새로운 쉘 (이 경우 Bash)을 로그인 쉘로 만듭니다.


합법적 인 것 같습니다. gopi1410이 동의하면 50 명의 담당자가 귀하의 것입니다.
Mateng

@Mateng : 동의했으며, 답변을위한 링크가 추가되었습니다.
gopi1410

1
루트로 실행 :sudo chsh -s /bin/bash
KrisWebDev

1
@ 3 년 이상 후에 저를 위해 일했습니다. 정말 고맙습니다! 당신은 굉장합니다!
goncalotomas

17

다음 변경 사항으로 문제가 해결되었습니다. 먼저 어떤 쉘이 실행 중인지 확인했습니다.

$ echo $0

어떤 결과를 반환 :

/bin/sh

Ubuntuforums 에서이 게시물을 읽으 면서 셸을 변경 /bin/bash하여 솔루션 을 제공합니다. 그래서 사용자 설정을 다음 /etc/passwd과 같이 편집 했습니다.

johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash

로그 아웃했다가 다시 로그인했습니다. 이상하게도 다음을 입력하여 수동으로 쉘을 전환해야했습니다 (일부 캐시가 활성화되었을 수도 있음).

/bin/bash

짜잔!
[배포 업데이트로 인해 문제가 발생했습니다.]


13

당신이 처음으로 ssh 할 때,이 두 가지 명령을 시도

stty sane
export TERM=linux

정확히이 문제를 해결하기 위해 들어가는 일부 컴퓨터 에서이 작업을 수행해야합니다.


1
나는 그것을 시도했지만 문제는 지속된다
Mateng

1
리눅스 대신 VT100이라는 용어를 사용해 보셨습니까? 무엇에 대한 stty erase <backspace>(<백 스페이스>는 실제로 키를 누르면 곳 인)
드레이크 Clarris

(화살표) : $ stty erase '^[[A' stty: invalid integer argument '\033[A'. [Backspace]로 : $ stty erase '^?'작동합니다. [Tab] 사용시 : $ stty erase ' ' 오류는 없지만 [Backspace]는 이상한 동작으로 돌아갑니다.
Mateng

시도 export TERM=VT100했지만 아무 소용이 없습니다.
Mateng

1
stty tab0도움이되지 않습니다. xterm의 일반적인 재구성이 필요하다고 생각합니다. 아니면 키맵이 잘못 되었습니까?
Mateng

5

이 문제를 해결하는 가장 쉬운 방법 중 하나는 명령 줄 인터페이스 프롬프트에서 / bin / bash를 입력하는 것입니다.

$ / bin / bash

앞에서 언급 한 명령은 기존 프로세스 위에 Bourne Again Shell을 하위 프로세스로 실행합니다. 이는 더 많은 리소스를 사용한다는 단점이 있지만 편집 할 필요가 없으며 특별한 권한이 필요하지 않습니다. 예를 들어 최근 쿠분투 버전에서는 기본 / bin / dash 명령 줄 셸 인터페이스에서 / bin / bash 세션을 시작합니다.

그러나 변경 사항을 유지하려면 / etc / passwd 파일을 편집하고 사용자에 해당하는 줄에서 마지막 ':'문자 다음에 기본 쉘을 / bin / bash에 추가 / 편집 / 바꾸십시오. 그러나이 파일을 편집하려면 관리자 권한이 필요합니다.


1

'Gbnome Terminal'은 'xterm'을 정확하게 에뮬레이트하지 않습니다.

from : Wikipedia >> 그놈 터미널

그놈 터미널은 xterm 터미널 에뮬레이터를 에뮬레이트 하고 동일한 기능 중 일부를 제공 합니다.


문제 및 해결책에 대한 논문은 여기에서 찾을 수 있습니다.

리눅스 백 스페이스 / 삭제 미니 하우투

콘솔과 X에서 백 스페이스 및 Delete 키를 사용할 수없는 상황에서 모든 Linux 사용자는 조만간 갇히게되었습니다. 이 백서는 왜 이런 일이 발생하는지 설명하고 솔루션을 제안합니다. 여기에 주어진 개념은 기본적으로 배포와 무관합니다. 각 배포에서 시스템 구성 파일의 내용이 매우 다르기 때문에 독자에게 필요한 경우 자신의 수정 사항을 생각할 수있는 충분한 지식을 제공하려고합니다.

Backspace 키는 한 문자 뒤로 이동 한 다음 커서 아래의 문자를 지워야한다고 가정합니다. 반면 Delete 키는 커서 아래의 문자를 움직이지 않고 삭제해야합니다. 대부분의 키보드에 백 스페이스 키의 왼쪽 (←)을 가리키는 화살표가 있음에도 불구하고 두 키의 기능을 교환해야한다고 생각하는 경우이 백서에서는 즉각적인 해결책을 제시하지는 않지만 확실히 여기에 제공된 설명이 유용 할 수 있습니다.

주어진 가장 간단한 해결책 (여기에서 작동 할 수 있음)을 사용하는 것입니다 : bash $ export TERM = gnome


1

루트 사용자로서 사용자의 / etc / passwd 파일을 편집하고 / bin / sh에서 / bin / bash로 변경하십시오.

hdfs : x : 1020 : 1001 :: / home / hdfs : / bin / sh에서 hdfs : x : 1020 : 1001 :: / home / hdfs : / bin / bash로

이것은 나를 위해 일했습니다.


1

나는 성공하지 않고 위의 모든 플러스 노트 ( 이 링크 )를 시도했습니다. vim이 설치되어 있는지 확인할 수 있습니다.

나는 보통 vi not vim을 사용한다. 그래서 나는 vim을 설치했다.

$ sudo apt-get install vim

그 후 vi를 실행했을 때 키보드 스트로크가 올바르게 작동하기 시작했습니다. 다음의 결과를 보면 설치 후 vi가 vim의 별칭으로 만들어진 것처럼 보입니다.

$ ls -al /etc/alternatives | grep vi 
lrwxrwxrwx   1 root root    18 Jan 13 09:38 vi -> /usr/bin/vim.basic

0

이는 키보드와의 호환성 문제, 즉 호스트 시스템에서 키보드가 해석되는 방식입니다. 명령 모드에서 vi 편집기로 이동하려면 j 또는 h를 사용해야합니다. 화살표가 작동하지 않습니다.

해당 특정 사용자에 대한 호스트 시스템의 프로파일 환경 설정-> 호환성을 확인하십시오.


0

좋아, 나는 이것이 말 당 "솔루션"이 아니라는 것을 알고 있으며, 그것은 당신 중 많은 사람들에게 도움이되지 않을 수도 있지만, 희망적으로는 적어도 당신 중 1 명에게 도움이되기를 바랍니다 . 내 문제가 해결되었습니다.

내 6 개월 된 내 키보드에 부딪 쳤고 화살표 키는 퍼티 세션에서 데비안 상자에 대한 작업을 중단했습니다. 그들은 다른 곳에서 일했습니다 (퍼티 이외의 다른 모든 프로그램). Googleing 후 여기에 착륙 한 후 (이 탭을 닫으려고했지만 해결되지 않았습니다) 나는 무언가를 시도했다. 같은 상자에 새 ssh 세션을 열었고 화살표 키가 작동했습니다. 스크린 세션에 참여했는데 작동하지 않았습니다. 그래서 방금 화살표 키를 비활성화하는 현재 화면 세션과 관련이 있습니다. 불행히도, 나는 큰 프로젝트의 중간에 있었고, 내 스크린 세션에서 28 개의 창이 열려 있었고, 28 개의 모든 창에서 내 자리를 잃어 버리고 세션을 닫고 싶지 않았습니다.

그래서..

bash 셸에서 CTRL + 위, 아래, 왼쪽 오른쪽, ALT + 위, 아래, 왼쪽, 오른쪽, SHIFT + 위, 아래, 왼쪽 오른쪽, CTRL + ALT + 위, 아래로 생각할 수있는 모든 조합을 시도했습니다. , 왼쪽 오른쪽, CTRL + SHIFT + 위, 아래, 왼쪽 오른쪽 등. 여전히 운이 없어도 Windows 메뉴 및 Windows 앱 키를 위, 아래, 왼쪽 오른쪽으로 시도했습니다.

이제 내 화살이 다시 작동합니다! 위의 항목과 화살표 키의 조합 중 하나에 대한 내용이 수정되었습니다.


0

위의 답변 중 어느 것도 내 동일한 문제를 해결하지 못했습니다. 즉 우분투에서 원격으로 sshing 한 후 백 스페이스 또는 유사한 키를 사용할 수 없습니다 (여기서는 ncurses-6.0의 ubuntu-17.10).

결국 terminfo에 문제가 있습니다. 기본적으로 내 gnome-terminal은 xterm-256color 터미널이라고 말하지만 (ssh에서 원격으로 내보내는 TERM 변수를 통해) 원격에는 xterm-256color에 대한 terminfo 구성이 없습니다.

다음을 수행하면 문제가 해결되었습니다.

$ host : 에코 $ TERM
xterm-256 색
$ host : infocmp> terminfo.src
$ host : tic terminfo.src
$ host : scp .terminfo / x / xterm-256color $ 원격 : / usr / share / terminfo / x / xterm-256color

옵션없이 infocmp는 환경 변수 $ TERM에서 터미널에 대한 소스 목록을 생성합니다. 따라서 infocmp -I $ TERM과 같습니다.

그런 다음 결과 소스는 tic을 통해 컴파일됩니다.

마지막으로 해당 terminfo 구성을 원격 위치에 설치하십시오. 다음에 $ host를 통해 $ remote에 연결하면 터미널에 대해 알게됩니다.


코드 블록의 기능은 무엇입니까? 어떻게 든 용어 구성을 만드시겠습니까? 약간의 설명이 필요합니다. 미스터리 코드를 실행하는 것이 가장 좋은 아이디어는 아니며, 심지어 맨 페이지가 infocmp의 기본 효과에 대해 명확하지 않거나, 이것이 어떻게 유용한 지에 대해 잘
알지 못합니다.

@ Xen2050 : 각 명령에 대한 설명을 추가했습니다. 옵션이없는 infocmp는 infocmp -I $ TERM과 같습니다. 매뉴얼 페이지에 설명되어 있지만 두 부분으로 설명되어 있습니다. "옵션을 지정하지 않고 하나 또는 하나의 용어 이름을 지정하면 -I 옵션이 사용됩니다. [...] -I, -L 및 -C 옵션 "terminfo 이름을 사용합니다. termname이 없으면 환경 변수 TERM이 터미널 이름으로 사용됩니다."
user1448926
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.