SFTP 원격 readdir 실패 - 파일 이름에 국가 문자가 포함되어 있습니다.

SFTP 원격 readdir 실패 - 파일 이름에 국가 문자가 포함되어 있습니다.

이름에 국가 문자가 포함된 디렉토리를 만들었습니다. 다음을 통해 디렉토리를 보고 찾아볼 수 있습니다.ssh

# cd /root
# ls
СтранноеРусскоеИмя

그러나 다음과 같은 방법으로는 이를 수행할 수 없습니다 SFTP.

sftp> cd /root
sftp> ls
remote readdir("/root"): Failure
sftp> 

이유와 해결 방법은 무엇입니까?


클라이언트 소프트웨어는 다른 호스트와 함께 작동하므로 무해합니다.


파일 이름이 영어로 되어 있으면 ls제대로 작동하므로 권한도 괜찮습니다.

여기에 이미지 설명을 입력하세요.

ls이 스크린샷에서는 디렉터리에 있는 두 개의 후속 명령을 볼 수 있습니다 root. 첫 번째는 실패했고, 두 번째는 성공했습니다. 유일한 차이점은 ssh국가 캐릭터 이름 파일이 병렬 세션에서 제거된다는 것입니다.

답변1

이는 로케일과 관련이 없을 것 같습니다. 한 댓글에서 무심코 언급한 내용을 바탕으로 "이는 다음을 통해 로그인을 시도하는 사용자 프로필과 관련이 있을 수 있습니다.sftp”, 원격 서버에 루트로 로그인하지 않은 것 같아 걱정됩니다.

루트가 아닌 사용자는 액세스할 수 없으며 /root이는 세션에 반영됩니다 sftp. 내 로컬 서버에 있는 동일한 파일은 다음과 같습니다. 해당 СтранноеРусскоеИмя파일은 다음과 같이 디렉토리에 배치됩니다 /tmp/526629.

sftp remoteuser@remoteserver
Connected to remoteserver.
sftp> cd /root
sftp> ls
remote readdir("/root"): Permission denied
sftp> cd /tmp/526629
sftp> ls
СтранноеРусскоеИмя
sftp>

또 다른 옵션은 실제로 로캘일 수 있습니다. 이 세션에서는 이전과 동일한 서버 구성을 사용합니다.

# Locale is UTF-8
LC_CTYPE="en_GB.UTF-8" sftp remoteuser@remoteserver
Connected to remoteserver.
sftp> cd /tmp/526629/
sftp> ls
СтранноеРусскоеИмя
sftp>

# Locale is C
LC_CTYPE=C sftp remoteuser@remoteserver
Connected to remoteserver.
sftp> cd /tmp/526629/
sftp> ls

sftp>

나는 당신의 것을 재현할 수 없지만 remote readdir("/root"): Failure원격 서버의 로케일을 확인하여 UTF-8 변형으로 설정되어 있는지 확인할 수 있습니다.

관련 정보