initial commit

This commit is contained in:
unknown
2026-02-19 20:05:04 +03:00
parent 1ee67d8159
commit 05097d5dda
32 changed files with 4413 additions and 3 deletions

View File

@@ -0,0 +1,141 @@
#!/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 настроен (только ключи)"