![SSH를 통해 tmux 세션에 연결할 때 UTF-8 문제](https://linux55.com/image/196662/SSH%EB%A5%BC%20%ED%86%B5%ED%95%B4%20tmux%20%EC%84%B8%EC%85%98%EC%97%90%20%EC%97%B0%EA%B2%B0%ED%95%A0%20%EB%95%8C%20UTF-8%20%EB%AC%B8%EC%A0%9C.png)
상상하다:
tmux 세션이 실행되는 서버가 있습니다. 우리는 이 세션을tmux_session
이 기사의 나머지 부분에서.
이 세션에 연결하는 방법에는 약간 다른 두 가지가 있습니다.
먼저 SSH를 통해 서버에 연결합니다.
user@host$ ssh [email protected]
그런 다음 지정된 세션에 추가합니다.
user@server$ tmux a -d -t tmux_session
SSH 연결과 동시에 연결을 통해:
user@host$ ssh [email protected] -t tmux -a -d -t tmux_session
징후:
방법 1예상대로 작동합니다. 광산은 -ing LANG
으로 설정되어 C.UTF-8
있으며 echo
거기에서 제대로 작동 tmux_session
하고 올바르게 보고합니다. 유니코드 입력 문자(예: "123¤")는 정상적으로 작동합니다.
방법 2단순 ASCII 이외의 유니코드 문자를 표시할 수 없는 세션을 생성합니다. 다른 모든 문자는 _
(밑줄)로 대체됩니다. 그러나 언제입력하다내부에서 실행되는 모든 애플리케이션에 실제로 입력되는 특수 문자로 tmux_session
, 편집기, IRC 클라이언트 등을 사용하여 확인했습니다. 방법 1을 사용하여 분리했다가 다시 부착하면 이전에 입력한 문자가 올바르게 나타납니다.
방법 2를 사용할 때 이 문제는 ssh 명령을 사용하여 세션에 연결할 때만 발생하며 입력된 실제 문자가 아닌 문자 표시에만 영향을 줍니다.
하지만 내부 출력 중 일부는 tmux
두 번 모두 약간 손상되었습니다. echo $LANG
내부로 들어갈 때 tmux_session
사용하는누구나방법을 보면 다음과 같습니다.
$ echo $LANG
cho C.UTF-8C.UTF-8
일부 내용이 깨져서 어떤 이유로든 입력 줄이 (부분적으로) 중복됩니다. 나는 superuser.com의 다른 게시물에서 삭제를 먼저 시도해야 한다는 것을 읽었습니다 . 따라서 파일이 없어도 문제가 완화되지 않는 것 같습니다 .tmux.conf
. .tmux.conf
어쨌든 $LANG
로 설정하는 C.UTF-8
것이 맞습니다.
SSH를 통해서만 서버에 연결할 때는 이 잘못된 출력이 발생하지 않습니다.
답변1
세션 내에서 로케일 설정을 확인하는 것이지 자체적으로 받은 로케일 설정은 확인 tmux
하지 않습니다 tmux
.
server.ltd
아마도 AcceptEnv LANG LC_*
그 안에 없거나/당신 의 sshd_config
것에는 없을 것이므로 로컬 시스템과 터미널이 UTF-8을 문자 세트로 사용한다는 사실은 원격 클라이언트로 전송되지 않습니다.SendEnv LANG LC_*
ssh_config
tmux
다음을 수행하여 문제를 해결할 수 있습니다.
ssh -t [email protected] "
set -o allexport
$(locale | grep -v '"')
exec tmux -a -d -t tmux_session"
(로컬 쉘과 원격 사용자의 로그인 쉘이 POSIX와 유사하다고 가정)
또는 터미널이 UTF-8로 통신하고 있다는 것을 알고 있는 경우 원하는 UTF-8 로케일을 하드코딩하면 됩니다.
ssh -t [email protected] 'exec env LANG=C.UTF-8 tmux -a -d -t tmux_session'
(모든 쉘에서 이해되는 구문)
답변2
tmux -u
$LANG이 올바르게 설정되지 않은 경우에도 강제로 utf-8로 출력하는 데 사용할 수 있습니다.