들어오는 SFTP 대화를 디버깅/추적하는 방법은 무엇입니까?

들어오는 SFTP 대화를 디버깅/추적하는 방법은 무엇입니까?

내 애플리케이션(JetBrains CLion)은 내 원격 서버에 연결하고 SFTP거기에 파일을 배치합니다. 불행하게도 파일은 0바이트로 채워져 있습니다. 무엇이 잘못되었는지 추적하고 싶습니다.

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

SFTPPS 내가 직접 파일을 실행하면 put괜찮습니다.


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

답변1

그만큼OpenSSH 서버라는 프로그램을 사용합니다SFTP 서버SFTP 세션의 경우. sftp-server로깅을 제어하는 ​​몇 가지 옵션이 있습니다.

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

-l 로그_레벨
sftp-server에 의해 기록될 메시지를 지정합니다. 가능한 값은 QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 및 DEBUG3입니다. INFO 및 VERBOSE는 sftp-server가 클라이언트를 대신하여 수행하는 트랜잭션을 기록합니다. 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 세션이 디버그 정보를 syslog에 기록하기 시작해야 합니다. 디버그 메시지를 사용하여 클라이언트가 보낸 명령과 SFTP 서버가 수행하는 파일 시스템 작업을 추적할 수 있습니다.

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

관련 정보