Jenkins에서 SSH 서버 추가 시 다음과 같은 오류가 발생하면서 [Test configuration]을 수행할 수 없을 때


Connected, but failed to setup SFTP - check the SSH server. Exec commands should work, but transferring files will fail

jenkins.plugins.publish_over_ssh.BapSshSftpSetupException: Failed to connect SFTP channel. Message [4: Received message is too long: 1027423515]


위 문제는 SSH를 non-interactive로 세션을 접속했을 때 쉘 초기화 파일에서 표준 출력이 있는 경우에 발생한다.

접속하는 계정의 ~/.profile, ~/.bashrc, ~/.bash_profile과 같은 쉘 세션 초기화 시에 실행되는 스크립트에서 echo 명령어나 다른 명령어로 인해 출력이 있을 때 발생할 수 있다. 이 출력 값으로 인해 SSH 클라이언트나 scp, sftp에서 정상적으로 출력되지 않는 경우가 있으므로, 위 초기화 파일로 인해 출력되는 내용이 없도록 수정하면 된다.


확인 방법은 대상 SSH 서버를 원격 호스트로 하여 아래와 같은 명령을 수행해서 아무런 출력이 없음을 확인하면 된다. (/usr/bin/true 파일의 존재는 상관없다, 파일이 없을 때는 bash: /usr/bin/true: No such file or directory라고만 출력된다.)


$ ssh localhost /usr/bin/true

bash: /usr/bin/true: No such file or directory


내 경우는 쉘 접속 시 초기화 스크립트의 수행 순서를 확인하려고 .bashrc 파일에 echo "=== START ~/.bashrc ==="를 넣어두었는데, 이것 때문에 젠킨스에서 SSH 서버 설정을 테스트할 수 없었다. 위 구문만 지워주니 깔끔하게 success로 확인이 되었다.



참조 : OpenSSH FAQ - 2.9 sftp/scp is fails at connection, but ssh is OK

이니시스의 로그가 깨져 나오길래 PuTTY의 인코딩이 잘못 설정되었나 싶어, 원격 쉘의 인코딩과 설정을 동일하게 하기 위해서 찾아보았다.


터미널은 환경 변수를 통해 문자 인코딩을 설정하기 때문에 해당 환경 변수를 출력해보면 된다.

$ echo $LC_CTYPE

$ echo $LANG



혹은 locale 명령을 통해 확인할 수 있다.

$ locale charmap



출처 : http://stackoverflow.com/questions/5306153/how-to-get-terminals-character-encoding

+ Recent posts