Вопрос или проблема
Я установил OpenSSH для Windows (Win Server 2008 R2) в качестве решения SFTP, и это отлично работает. См. здесь: Установка OpenSSH на Windows
Однако служба sshd создает непослушный файл журнала, sshd.log, который за два дня вырос до 75 ГБ и заполнил мой диск C:. После удаления 75 ГБ содержимого файла журнала он сразу же начинает занимать место в sshd.log.
Буду благодарен за любые рекомендации.
Вот мой файл sshd_config:
# $OpenBSD: sshd_config,v 1.84 2011/05/23 03:30:07 djm Exp $
# Это файл конфигурации системы sshd. См.
# sshd_config(5) для получения дополнительной информации.
# Этот sshd был скомпилирован с PATH=/usr/bin:/bin:/usr/sbin:/sbin
# Стратегия, используемая для параметров в конфигурационном файле по умолчанию, поставляемом с
# OpenSSH, состоит в том, чтобы указывать параметры с их значением по умолчанию, где
# это возможно, но оставлять их закомментированными. Раскомментированные параметры переопределяют
# значение по умолчанию.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
# По умолчанию требует явной активации протокола 1
#Protocol 2
# HostKey для версии протокола 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys для версии протокола 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
# Время жизни и размер временного ключа сервера версии 1
#KeyRegenerationInterval 1h
#ServerKeyBits 1024
# Ведение журнала
# устарело QuietMode и FascistLogging
#SyslogFacility AUTH
#LogLevel INFO
# Аутентификация:
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#RSAAuthentication yes
#PubkeyAuthentication yes
# По умолчанию проверяются как .ssh/authorized_keys, так и .ssh/authorized_keys2
# но это переопределяется, так что установки будут проверять только .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
# Для этого также нужны ключи хоста в /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# аналогично для версии протокола 2
#HostbasedAuthentication no
# Измените на yes, если не доверяете ~/.ssh/known_hosts для
# RhostsRSAAuthentication и HostbasedAuthentication
#IgnoreUserKnownHosts no
# Не читать файлы пользователя ~/.rhosts и ~/.shosts
#IgnoreRhosts yes
# Чтобы отключить туннелирование открытых текстовых паролей, измените на no здесь!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Измените на no, чтобы отключить пароли s/key
#ChallengeResponseAuthentication yes
# Опции Kerberos
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# Опции GSSAPI
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
# Установите это на 'yes', чтобы включить аутентификацию PAM, обработку учетных записей и
# обработку сеансов. Если это включено, аутентификация PAM будет
# разрешена через ChallengeResponseAuthentication и
# PasswordAuthentication. В зависимости от вашей конфигурации PAM,
# аутентификация PAM через ChallengeResponseAuthentication может обойти
# установку "PermitRootLogin without-password".
# Если вы хотите, чтобы проверки учетной записи и сеанса PAM выполнялись без
# аутентификации PAM, тогда включите это, но установите аутентификацию пароля
# и аутентификацию ответа на вызов в 'no'.
#UsePAM no
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no
#ChrootDirectory none
# нет стандартного пути к баннеру
#Banner none
# переопределение по умолчанию отключенных подсистем
Subsystem sftp sftp-server.exe
# Пример переопределения настроек для каждого пользователя
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server
PubkeyAcceptedKeyTypes ssh-ed25519*,ssh-rsa*,ssh-dss*,ecdsa-sha2*
Сервер OpenSSH на Windows еще не находится в ‘завершенном’ состоянии.
Я не уверен, но я сильно подозреваю, что вам нужно будет создать свою собственную задачу ротации журналов. OpenSSH зависит от системы для этого. Но ничего такого на Windows нет.
Вам также может понадобиться уменьшить уровень подробности ведения журнала.
Добавление чего-то вроде “LogLevel VERBOSE” в конфигурационный файл должно изменить уровень журнала или “LogLevel info”. Также вы можете попробовать добавить это в секцию [Service].
Простой пакетный скрипт для удаления файлов и расписание выполнения этой задачи каждый день поможет вам сейчас. Но вы также должны проверить, что заставляет эту службу OpenSSH создавать столько журналов.
Команда для добавления в пакетный файл для удаления файлов журнала должна выглядеть примерно так:
“del “
Ответ или решение
Проблема размера файла sshd.log на OpenSSH SFTP Windows Server 2008 R2
Введение
Установка OpenSSH на Windows Server 2008 R2 в качестве решения для SFTP позволяет расширить функциональность вашего сервера. Однако, как стало известно, ведение логов этой службы может стать серьезной проблемой. Файл журнала sshd.log
может быстро увеличиться до неуправляемых размеров, как это произошло у вас, достигнув 75 ГБ всего за два дня. Это не только затрудняет управление дисковым пространством, но и может вызывать замедление работы системы. В данной статье мы рассмотрим пути решения этой проблемы, включая настройки конфигурации и варианты автоматизации управления логами.
Анализ проблемы
- Причины роста файла sshd.log:
- Высокий уровень детализации логов: Стандартный уровень логирования
INFO
может генерировать слишком много записей, особенно если в системе есть частые подключения и отключения пользователей или ошибки при аутентификации. - Отсутствие автоматического управления логами: В отличие от UNIX-подобных систем, где имеются встроенные механизмы ротации логов, Windows не предоставляет такой функциональности по умолчанию для OpenSSH.
- Высокий уровень детализации логов: Стандартный уровень логирования
Рекомендации по решению
-
Изменение уровня логирования:
- Уменьшите уровень логирования в файле
sshd_config
. Вы можете изменить строку:#LogLevel INFO
на
LogLevel QUIET
или, в крайнем случае, на
ERROR
, чтобы минимизировать запись в журнал, сохранив только критические ошибки.
- Уменьшите уровень логирования в файле
-
Ротация логов:
- Поскольку OpenSSH не поддерживает автоматическую ротацию логов на Windows, необходимо реализовать это вручную. Один из способов — создать пакетный файл (batch script), который будет удалять или архивировать старые логи.
Пример простого пакетного файла:
@echo off set LOGFILE=C:\path\to\sshd.log set BACKUPFILE=C:\path\to\backup\sshd_%date:~-4,4%-%date:~-10,2%-%date:~-7,2%.log REM Archive the current log if exist %LOGFILE% ( move %LOGFILE% %BACKUPFILE% ) REM Create a new empty log file echo. > %LOGFILE%
- Настройте планировщик задач Windows (Task Scheduler) для выполнения этого скрипта, например, ежедневно.
-
Мониторинг событий:
- Вам также следует выяснить, какие действия вызывают столь высокую активность в логах. Для этого вы можете включить временное более детальное логирование (например,
LogLevel VERBOSE
) и проанализировать, какие события чаще всего записываются. Это поможет вам понять, требуется ли дальнейшая оптимизация или исправление конфигураций.
- Вам также следует выяснить, какие действия вызывают столь высокую активность в логах. Для этого вы можете включить временное более детальное логирование (например,
Заключение
Проблема с раздувающимся файлом лога sshd.log
на OpenSSH для Windows Server 2008 R2 может быть решена настройкой уровня логирования и внедрением рутины ротации логов через планировщик задач. Следите за действиями пользователей и попытками аутентификации для минимизации ненужных записей. Регулярное управление логами не только предотвратит заполнение дискового пространства, но и поможет сохранить производительность системы на высоком уровне.