SSH에는 외국 문자가 표시되지 않습니다.

SSH에는 외국 문자가 표시되지 않습니다.

ssh(관리자 액세스 권한이 없는) 원격 서버를 사용하는 데 몇 가지 문제가 있습니다. 특히 한국어와 키릴 문자가 포함된 폴더가 여러 개 있습니다.

를 사용하여 상위 폴더 내용을 표시하면 ls문자가 "?"로 이스케이프됩니다. 아마도 이스케이프된 것으로 보이는 한국어 문자의 수가 한국어 문자의 수보다 훨씬 많다는 점은 주목할 가치가 있습니다.~해야 한다저기.

나는 내가 사용하고 있는 터미널 프로그램이 이러한 문자를 sftp완벽하게 표시하기 때문에 이러한 문자를 표시할 수 있다는 것을 알고 있습니다. 이 문제는 내가 시도한 모든 터미널에서 발생합니다.

기계 개요

로컬 머신:

  • 리눅스 2.6.32-5-686, i686
  • 데비안 GNU/리눅스 6.0.2 (스퀴즈)
  • 관리자 권한이 있습니다

원격 서버:

  • 리눅스 2.6.32-bpo.5-amd64, x86_64
  • 데비안 GNU/리눅스 5.0.8(레니)
  • 관리자 권한 및 물리적 권한이 없습니다.

다른 중요한 통계나 일부 정보를 놓쳤을 수도 있으니 사과드립니다. 저는 Windows가 아닌 컴퓨팅 측면 전체를 처음 접했기 때문에 여기서 무엇을 하고 있는지 거의 모릅니다.

답변1

당신의로케일서버 컴퓨터의 정보가 올바르게 설정되지 않았습니다. 특히, LC_CTYPE터미널의 문자 인코딩을 나타내는 변수가 잘못 설정되었습니다(또는 전혀 설정되지 않은 것 같습니다).

로컬 터미널에서 실행하여 locale로케일을 확인하세요. (다른 줄 중에서) 다음과 같은 내용을 볼 수 있습니다 LC_CTYPE=en_US.UTF-8. 여기서 중요한 것은 다음을 .UTF-8나타내는 부분 입니다.UTF-8코딩. 이는 Unix 세계(및 그 이상)의 다국어 텍스트에 대한 사실상의 표준 인코딩입니다.

이 정보를 서버에 전달해야 합니다. 가능하다면 가장 좋은 방법은 SSH 연결을 통해 로케일 정보를 보내는 것입니다. 이렇게 하려면 끝에 다음 줄을 추가하세요 ~/.ssh/config.

Host *
SendEnv LC_* LANG

이를 위해서는 서버 구성에 AcceptEnv적절한 지시문( )이 있어야 합니다(Debian에서는 기본값)./etc/ssh/sshd_config

이것이 작동하지 않고 항상 UTF-8 터미널에서 서버에 로그인하는 경우 서버의 파일(또는 쉘이 사용하는 파일)에 이 행을 추가하십시오 export LC_CTYPE=en_US.UTF-8. 예를 들어 로케일 이름은 제공된 이름 중 하나여야 하며 로케일 이름이 있거나 약간 변형되어 있어야 합니다.~/.bashrc~/.zshrcen_US.UTF-8locale -a.UTF-8.utf8

관련 정보