#!/bin/bash #=============================================================================== # ШАГ 6: НАСТРОЙКА SSH #=============================================================================== # Запуск: sudo bash 01-k-server-initial-setup.06.sh #=============================================================================== SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) source "$SCRIPT_DIR/01-k-server-initial-setup.00.sh" init_log check_root print_header "ШАГ 6: НАСТРОЙКА SSH" SSH_CONFIG="/etc/ssh/sshd_config" #------------------------------------------------------------------------------- # 6.1 Проверка SSH-сервиса #------------------------------------------------------------------------------- print_subheader "Проверка SSH" if service_running sshd || service_running ssh; then print_success "SSH-сервер запущен" else print_warning "SSH-сервер не запущен" print_info "Установка OpenSSH..." apt install -y openssh-server fi #------------------------------------------------------------------------------- # 6.2 Backup конфигурации #------------------------------------------------------------------------------- print_subheader "Резервная копия" if [[ -f "$SSH_CONFIG" ]]; then cp "$SSH_CONFIG" "${SSH_CONFIG}.backup.$(date +%Y%m%d_%H%M%S)" print_success "Backup создан" fi #------------------------------------------------------------------------------- # 6.3 Создание новой конфигурации #------------------------------------------------------------------------------- print_subheader "Создание конфигурации" cat > "$SSH_CONFIG" << 'EOF' # SSH Server Configuration - Ubuntu 24.04 # АВТОРИЗАЦИЯ ТОЛЬКО ПО КЛЮЧАМ # Сетевые настройки Port 22 AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: # Ключи хоста HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Аутентификация - ТОЛЬКО КЛЮЧИ PermitRootLogin prohibit-password PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # ОТКЛЮЧИТЬ парольную аутентификацию PasswordAuthentication no PermitEmptyPasswords no KbdInteractiveAuthentication no ChallengeResponseAuthentication no UsePAM no # Безопасность сессий X11Forwarding no AllowAgentForwarding yes AllowTcpForwarding no PermitTunnel no PermitUserEnvironment no # Логирование SyslogFacility AUTH LogLevel VERBOSE # Таймауты LoginGraceTime 30 ClientAliveInterval 300 ClientAliveCountMax 2 MaxAuthTries 3 MaxSessions 5 # Криптография (современные алгоритмы) KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com # Разрешённые пользователи (раскомментируйте и настройте) AllowUsers admin git komisar # SFTP подсистема Subsystem sftp /usr/lib/openssh/sftp-server EOF print_success "SSH конфигурация создана" #------------------------------------------------------------------------------- # 6.4 Проверка конфигурации #------------------------------------------------------------------------------- print_subheader "Проверка конфигурации" if sshd -t; then print_success "Конфигурация SSH валидна" else print_error "Ошибка в конфигурации SSH!" exit 1 fi #------------------------------------------------------------------------------- # 6.5 Перезапуск SSH #------------------------------------------------------------------------------- print_subheader "Перезапуск SSH" systemctl restart sshd 2>/dev/null || systemctl restart ssh systemctl enable sshd 2>/dev/null || systemctl enable ssh print_success "SSH перезапущен" #------------------------------------------------------------------------------- # 6.6 Предупреждение #------------------------------------------------------------------------------- echo "" echo -e "${YELLOW}============================================================${NC}" echo -e "${YELLOW} ВАЖНО: Парольная авторизация ОТКЛЮЧЕНА!${NC}" echo -e "${YELLOW}============================================================${NC}" echo "" echo " Убедитесь, что SSH-ключ добавлен для $ADMIN_USER:" echo " cat /home/$ADMIN_USER/.ssh/authorized_keys" echo "" echo " Проверьте вход с другой консоли ПЕРЕД закрытием текущей сессии!" echo "" print_success "Шаг 6 завершён: SSH настроен (только ключи)"