Мое приложение (JetBrains CLion) подключается к моему удаленному серверу SFTP
и размещает там файлы. К сожалению, файлы появляются заполненными нулевыми байтами. Я хочу отследить, что идет не так.
Могу ли я запустить что-то на своем сервере, чтобы отслеживать SFTP
сеансы в реальном времени и видеть, что происходит. Я root
на сервере. На сервере установлена Ubuntu 16.
P.S. Если я запускаю SFTP
себя и put
файлы, то они в порядке.
На стороне клиента я не вижу никаких проблем в логах: просто некоторая сессия с put
, stat
и похожие команды с Ok
выходами. Поэтому хотелось бы отладить и сторону сервера.
решение1
TheOpenSSH-сервериспользует программу под названиемsftp-сервердля сеансов SFTP. sftp-server
имеет несколько опций для управления ведением журнала:
-f log_facility
Указывает код объекта, который используется при регистрации сообщений с sftp-сервера. Возможные значения: 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 каждый указывает более высокие уровни отладочного вывода. Значение по умолчанию — ERROR.
Чтобы применить их, вы открываете свою системуsshd_configфайл и найдите Subsystem
строку для 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, исходный код можно найтиздесь. Если вы сможете его понять, то, вероятно, исходный код будет вам полезен для понимания сообщений журнала.