Meu aplicativo (JetBrains CLion) se conecta ao meu servidor remoto SFTP
e coloca arquivos nele. Infelizmente, os arquivos aparecem preenchidos com zero bytes. Quero rastrear o que deu errado.
Posso executar algo no meu servidor para monitorar SFTP
as sessões em tempo real e ver o que está acontecendo. Eu sou um root
servidor. O servidor executa o Ubuntu 16.
PS Se eu executar SFTP
a mim mesmo e put
aos arquivos, eles estarão ok.
No lado do cliente, não vejo problemas nos logs: apenas algumas sessões com put
e stat
comandos semelhantes com Ok
saídas. Então, gostaria de depurar o lado do servidor também.
Responder1
OServidor OpenSSHusa um programa chamadoservidor sftppara sessões SFTP. sftp-server
tem algumas opções para controlar o registro:
-f log_facility
Especifica o código de recurso usado ao registrar mensagens do servidor sftp. Os valores possíveis são: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7. O padrão é AUTH.-l log_level
Especifica quais mensagens serão registradas pelo servidor sftp. Os valores possíveis são: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 e DEBUG3. INFO e VERBOSE registram transações que o servidor sftp executa em nome do cliente. DEBUG e DEBUG1 são equivalentes. DEBUG2 e DEBUG3 especificam níveis mais altos de saída de depuração. O padrão é ERRO.
Para aplicá-los, você abre o seu sistemasshd_configarquivo e encontre a Subsystem
linha para SFTP. Será parecido com uma ou outra destas duas linhas:
Subsystem sftp /path/to/sftp-server
Subsystem sftp internal-sftp
O que quer que você tenha, anexe os argumentos de registro ao final:
Subsystem sftp /path/to/sftp-server -l DEBUG3
Após a edição sshd_config
, você deve reiniciar sshd
para que a alteração tenha efeito.
Depois de fazer tudo isso, as sessões SFTP deverão começar a registrar informações de depuração no syslog. Você pode usar as mensagens de depuração para rastrear os comandos enviados por um cliente e as operações do sistema de arquivos que o servidor SFTP executa.
O programa sftp-server é escrito em C e você pode encontrar o código fonteaqui. Se você conseguir entendê-lo, provavelmente achará o código-fonte útil para entender as mensagens de log.