들어오는 SFTP 세션을 디버깅/추적하는 방법은 무엇입니까?

들어오는 SFTP 세션을 디버깅/추적하는 방법은 무엇입니까?

내 애플리케이션(JetBrains CLion)은 원격 서버에 연결 SFTP하고 거기에 파일을 배치하는 방식으로 작동합니다. 안타깝게도 파일이 0바이트로 가득 찬 것 같습니다. 무엇이 잘못되었는지 추적하고 싶습니다.

내 서버에서 무언가를 실행하여 SFTP세션을 실시간으로 모니터링하고 무슨 일이 일어나고 있는지 확인할 수 있습니다. 나는 root서버에 있습니다. 서버는 Ubuntu 16을 실행합니다.

PS 내가 SFTP직접 실행하면 put파일이 제대로 작동합니다.


클라이언트 측에서는 로그에 어떤 문제도 표시되지 않습니다. 단지 일부 세션과 put유사한 stat명령이 출력 있습니다 Ok. 그래서 서버 측도 디버깅하고 싶습니다.

답변1

이것OpenSSH 서버라는 파일을 사용하십시오.SFTP 서버SFTP 세션에 사용됩니다. sftp-server로깅을 제어하는 ​​몇 가지 옵션이 있습니다.

-f 로깅 시설
SFTP 서버에서 메시지를 기록할 때 사용할 기능 코드를 지정합니다. 가능한 값은 DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7입니다. 기본값은 AUTH입니다.

-l 로그 수준
SFTP 서버가 기록할 메시지를 지정합니다. 가능한 값은 QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 및 DEBUG3입니다. INFO 및 VERBOSE는 클라이언트를 대신하여 SFTP 서버가 수행한 트랜잭션을 기록합니다. DEBUG와 DEBUG1은 동일합니다. DEBUG2 및 DEBUG3은 각각 더 높은 수준의 디버깅 출력을 지정합니다. 기본값은 오류입니다.

이를 적용하려면 시스템을 열어야 합니다.sshd_configSubsystem파일을 열고 SFTP 라인을 찾으세요 . 다음 두 줄 중 하나처럼 보입니다.

Subsystem   sftp    /path/to/sftp-server
Subsystem   sftp    internal-sftp

가지고 있는 것이 무엇이든 끝에 로깅 매개변수를 추가하세요.

Subsystem   sftp    /path/to/sftp-server -l DEBUG3

편집한 후에 는 sshd_config다시 시작해야 sshd변경 사항이 적용됩니다.

이 모든 작업이 완료되면 SFTP 세션은 디버깅 정보를 시스템 로그에 기록하기 시작해야 합니다. 디버그 메시지를 사용하면 클라이언트가 보낸 명령과 SFTP 서버가 수행하는 파일 시스템 작업을 추적할 수 있습니다.

sftp-server 프로그램은 C로 작성되었으며 소스 코드를 찾을 수 있습니다.여기. 이해할 수 있다면 로그 메시지를 이해하는 데 소스 코드가 도움이 될 수 있습니다.

관련 정보