Подробный гайд: что делать если ALT Linux 8 не подключается по SSH?
Важно:
Все команды выполняются от root или через sudo.
Перед изменением конфигов SSH создайте резервную копию:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
1. Быстрая диагностика (чек-лист)
| Симптом | Вероятная причина |
|---|---|
Connection refused |
Сервис sshd не запущен или слушает другой порт |
Connection timed out |
Брандмауэр, отсутствие маршрута, сетевая проблема |
Permission denied (publickey,password) |
Ошибка аутентификации, отключён пароль/ключ, PAM/ACL |
Connection closed by authenticating user |
Слишком много попыток, бан fail2ban, ошибка в конфиге |
2. Проверка сетевой доступности
# 1. Проверьте, отвечает ли хост
ping -c 4 <IP_АДРЕС>
# 2. Проверьте, открыт ли порт 22 (или ваш кастомный)
nc -zv <IP_АДРЕС> 22
# или
telnet <IP_АДРЕС> 22
# 3. Убедитесь, что интерфейс активен и имеет IP
ip a show
ip route show
Если ping не проходит — проблема в сети, VLAN, маршрутизации или хост выключен.
Если ping есть, но порт закрыт — проблема в sshd или брандмауэре (переходите к разделам 3-4).
3. Проверка и запуск SSH-сервера
# Статус сервиса
systemctl status sshd
# Если сервис не запущен или отключён
systemctl start sshd
systemctl enable sshd
# Проверка установки пакета
rpm -q openssh-server
# Если отсутствует:
apt-get install openssh-server
Проверка синтаксиса конфига (обязательно перед рестартом):
sshd -t
# Если вывод пустой — конфиг валиден. Если ошибка — исправьте строку, указанную в выводе.
4. Проверка /etc/ssh/sshd_config
Откройте конфиг:
nano /etc/ssh/sshd_config
Проверьте ключевые директивы:
Port 22 # Убедитесь, что порт совпадает с тем, на который подключаетесь
ListenAddress 0.0.0.0 # 0.0.0.0 = все интерфейсы. Если указан конкретный IP, проверьте его
PermitRootLogin prohibit-password # или yes (для отладки)
PasswordAuthentication yes # Если подключаетесь по паролю
PubkeyAuthentication yes # Если по ключу
UsePAM yes # Стандартно для ALT Linux
После правок:
systemctl restart sshd
5. Брандмауэр (firewalld / iptables)
ALT Linux 8 по умолчанию использует firewalld.
# Статус и правила
firewall-cmd --state
firewall-cmd --list-all
# Разрешение SSH
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
# Проверка после применения
firewall-cmd --query-service=ssh
Если используется iptables напрямую:
iptables -L INPUT -n --line-numbers
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
service iptables save # или iptables-save > /etc/sysconfig/iptables
6. Анализ логов
# Логи службы sshd в реальном времени
journalctl -u sshd -f
# Логи за последний час
journalctl -u sshd --since "1 hour ago"
# Классические логи аутентификации (RPM-системы)
tail -f /var/log/secure
# или
grep sshd /var/log/messages
Расшифровка частых записей:
| Запись в логе | Значение |
|---|---|
Failed password for |
Неверный пароль/логин |
Connection closed by authenticating user |
Превышен MaxAuthTries или сработал fail2ban |
fatal: /etc/ssh/sshd_config: line X: Bad configuration option |
Ошибка в конфиге |
error: Could not load host key |
Отсутствуют ключи хоста — выполните ssh-keygen -A |
7. Аутентификация и права
Если вход по ключу:
# На сервере (в домашней каталоге пользователя)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $(whoami):$(whoami) ~/.ssh
# Проверка, включён ли путь к authorized_keys в sshd_config:
grep AuthorizedKeysFile /etc/ssh/sshd_config
Если вход по паролю:
- Убедитесь, что у пользователя установлен пароль:
passwd username - Проверьте PAM:
grep -i password /etc/pam.d/sshd(обычно трогать не нужно)
8. Диагностика со стороны клиента
Запустите подключение с максимальной отладкой:
ssh -vvv -p 22 user@<IP_АДРЕС>
Что смотреть в выводе:
debug1: Connecting to ...— сетевой этапdebug1: Remote protocol version ...— сервер ответилdebug1: Authentications that can continue:— какие методы предлагает серверdebug3: send packet: type 50— этап ввода пароля/ключа
Частые клиентские причины:
- Сохранённый старый ключ в
~/.ssh/known_hosts— удалите строку с IP:ssh-keygen -R <IP> - Использование PuTTY/WinSCP с неверным форматом ключа — конвертируйте через
puttygen - NAT блокирует порт — проверьте маршрутизацию
9. Таблица типичных ошибок и решений
| Ошибка | Решение |
|---|---|
Connection refused |
systemctl status sshd, sshd -t, проверка Port в конфиге |
Connection timed out |
firewall-cmd --add-service=ssh, проверка маршрутов, iptables -F (временно) |
Permission denied (publickey) |
Проверьте права ~/.ssh, содержимое authorized_keys, PubkeyAuthentication yes |
Too many authentication failures |
Добавьте -o IdentitiesOnly=yes к клиентской команде |
Host key verification failed |
ssh-keygen -R <IP>, проверьте, не изменился ли IP у хоста |
No supported authentication methods |
Включите PasswordAuthentication yes или настройте ключи |
10. Рекомендации по безопасности (после восстановления доступа)
- Отключите вход
rootпо паролю:PermitRootLogin prohibit-password - Используйте только аутентификацию по ключам:
PasswordAuthentication no - Смените стандартный порт (опционально):
Port 2222+ откройте его в firewall - Установите
fail2ban:apt-get install fail2ban, включите jail для sshd - Регулярно обновляйте:
apt-get update && apt-get upgrade
Финальная проверка
# 1. Сервис активен
systemctl is-active sshd
# 2. Порт слушается
ss -tlnp | grep :22
# 3. Брандмауэр пропускает
firewall-cmd --query-service=ssh
# 4. Тест локально (с сервера на себя)
ssh -vvv localhost