Files
gitserver/01/01-k-server-initial-setup.06.sh
2026-02-19 20:05:04 +03:00

142 lines
4.9 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 настроен (только ключи)"