142 lines
4.9 KiB
Bash
Executable File
142 lines
4.9 KiB
Bash
Executable File
#!/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 настроен (только ключи)"
|