# =============================================================================
#                           OPENSSH SERVER CONFIG
#                           Основные настройки SSH
# =============================================================================

# -----------------------------------------------------------------------------
# ВАЖНЫЕ НАСТРОЙКИ
# -----------------------------------------------------------------------------

# Порт SSH
# Если меняете порт, не забудьте открыть его в firewall
#Port 22

# Разрешить аутентификацию по SSH-ключам
PubkeyAuthentication yes

# Файл(ы) с разрешёнными публичными ключами пользователя
AuthorizedKeysFile .ssh/authorized_keys

# Запретить пустые пароли
PermitEmptyPasswords yes

# Запретить вход по обычному паролю
PasswordAuthentication no

# Разрешить challenge-response аутентификацию
ChallengeResponseAuthentication yes

# Разрешить интерактивную клавиатурную аутентификацию через PAM
KbdInteractiveAuthentication yes

# Запретить прямой вход под root
PermitRootLogin yes

# Использовать PAM для аутентификации и управления сессиями
UsePAM yes


# =============================================================================
#                           СЕТЕВЫЕ НАСТРОЙКИ
# =============================================================================

# Используемое семейство адресов: any, inet или inet6
#AddressFamily any

# IPv4-адрес для прослушивания SSH
#ListenAddress 0.0.0.0

# IPv6-адрес для прослушивания SSH
#ListenAddress ::


# =============================================================================
#                              HOST KEYS
# =============================================================================

# Приватные ключи SSH-сервера
# Обычно определяются автоматически, если не указаны явно

#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key


# =============================================================================
#                         ШИФРОВАНИЕ И КЛЮЧИ
# =============================================================================

# Лимит объёма данных и времени до повторного создания ключей сеанса
#RekeyLimit default none


# =============================================================================
#                               ЛОГИРОВАНИЕ
# =============================================================================

# Системная подсистема для записи логов SSH
#SyslogFacility AUTH

# Уровень детализации логов
# Возможные значения: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG
#LogLevel INFO


# =============================================================================
#                           АУТЕНТИФИКАЦИЯ
# =============================================================================

# Время, отведённое пользователю на успешную аутентификацию
#LoginGraceTime 2m

# Проверять права доступа к домашнему каталогу и SSH-файлам пользователя
#StrictModes yes

# Максимальное количество попыток входа за одно подключение
#MaxAuthTries 6

# Максимальное количество одновременных SSH-сессий
#MaxSessions 10

# Дополнительный файл с публичными ключами.
# Устаревший формат authorized_keys2 обычно игнорируется.
#AuthorizedPrincipalsFile none

# Внешняя команда для получения публичных SSH-ключей
#AuthorizedKeysCommand none

# Пользователь, от имени которого запускается AuthorizedKeysCommand
#AuthorizedKeysCommandUser nobody


# =============================================================================
#                         HOST-BASED АУТЕНТИФИКАЦИЯ
# =============================================================================

# Разрешить аутентификацию на основе доверенных хостов
#HostbasedAuthentication no

# Игнорировать пользовательский файл ~/.ssh/known_hosts
#IgnoreUserKnownHosts no

# Не использовать устаревшие файлы ~/.rhosts и ~/.shosts
#IgnoreRhosts yes


# =============================================================================
#                               KERBEROS
# =============================================================================

# Использовать аутентификацию Kerberos
#KerberosAuthentication no

# Использовать локальный пароль, если Kerberos недоступен
#KerberosOrLocalPasswd yes

# Удалять Kerberos ticket после завершения сессии
#KerberosTicketCleanup yes

# Получать AFS token
#KerberosGetAFSToken no


# =============================================================================
#                                GSSAPI
# =============================================================================

# Использовать GSSAPI-аутентификацию
#GSSAPIAuthentication no

# Удалять credentials GSSAPI после завершения сессии
#GSSAPICleanupCredentials yes

# Выполнять строгую проверку принимающей стороны
#GSSAPIStrictAcceptorCheck yes

# Разрешить обмен ключами через GSSAPI
#GSSAPIKeyExchange no


# =============================================================================
#                       ПЕРЕНАПРАВЛЕНИЯ И СЕССИИ
# =============================================================================

# Разрешить перенаправление SSH-agent
#AllowAgentForwarding yes

# Разрешить TCP port forwarding
#AllowTcpForwarding yes

# Разрешить удалённым клиентам использовать forwarded-порты извне
#GatewayPorts no

# Разрешить X11 forwarding
X11Forwarding yes

# Смещение номера X11 display
#X11DisplayOffset 10

# Использовать localhost для X11 forwarding
#X11UseLocalhost yes

# Разрешить выделение псевдотерминала
#PermitTTY yes


# =============================================================================
#                           ИНФОРМАЦИЯ ПРИ ВХОДЕ
# =============================================================================

# Не выводить системное сообщение MOTD через sshd
# В Ubuntu обычно MOTD управляется PAM
PrintMotd no

# Показывать информацию о последнем входе пользователя
#PrintLastLog yes


# =============================================================================
#                         СОЕДИНЕНИЕ И KEEPALIVE
# =============================================================================

# Использовать TCP KeepAlive
#TCPKeepAlive yes

# Интервал проверки активности клиента сервером
#ClientAliveInterval 0

# Количество пропущенных проверок до отключения клиента
#ClientAliveCountMax 3


# =============================================================================
#                        ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ
# =============================================================================

# Разрешить пользователю передавать переменные окружения
#PermitUserEnvironment no

# Использовать сжатие данных
#Compression delayed

# Использовать DNS lookup для подключающихся клиентов
#UseDNS no

# PID-файл SSH-сервера
#PidFile /run/sshd.pid

# Ограничение количества одновременных неаутентифицированных подключений
# Формат: начало:вероятность:максимум
#MaxStartups 10:30:100

# Разрешить создание SSH tunnel-интерфейсов
#PermitTunnel no

# Chroot-каталог для пользователей
#ChrootDirectory none

# Дополнительная информация о версии SSH-сервера
#VersionAddendum none


# =============================================================================
#                                BANNER
# =============================================================================

# Баннер, отображаемый перед аутентификацией
#Banner none


# =============================================================================
#                       ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ
# =============================================================================

# Разрешить передачу локали от SSH-клиента
AcceptEnv LANG LC_*


# =============================================================================
#                              SFTP
# =============================================================================

# Подсистема SFTP
Subsystem sftp /usr/lib/openssh/sftp-server


# =============================================================================
#                     НАСТРОЙКИ ДЛЯ ОТДЕЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ
# =============================================================================

# Пример применения отдельных правил к конкретному пользователю:
#
#Match User anoncvs
#    X11Forwarding no
#    AllowTcpForwarding no
#    PermitTTY no
#    ForceCommand cvs server
