secure copy 명령어를 사용해 운용중이던 데비안 서버에서 파일을 받아오려고 하자, 다음과 같은 에러가 나타나며 강제로 연결이 종료되었습니다.
scp: Received message too long 3801516258
scp: Ensure the remote shell produces no output for non-interactive sessions.
이 에러는 sftp 클라이언트가 서버로부터 잘못된 응답을 수신했다는 의미입니다.
sftp 서버와 클라이언트가 세션 수립 시, '.bashrc', '.profile' 등 서버의 쉘 기본 스크립트 (startup script)에서 발생하는 출력을 클라이언트가 sftp 메시지로 파싱하려 하기 때문에 에러가 발생합니다.
제 경우는 해당 데비안 서버에서 쉘 실행시 시스템 요약 정보를 출력하도록 설정해 두었는데 이것이 문제가 된 것 같습니다.
ssh 서버에서 /etc/ssh/sshd_config 파일을 열어, 위와 같이 "Subsystem sftp /usr/lib/openssh/sftp-server" 부분을 주석 처리하고 새로 "Subsystem sftp internal-sftp" 를 추가합니다.
이 조치는 sftp 세션에 대해 쉘이 실행되지 않도록 하여 정상적으로 연결을 수립할 수 있게 합니다.