SSH: Подключение отказано

Вопрос или проблема

SSH-соединение работало правильно, но сегодня, к сожалению, оно остановилось.

Я сделал много попыток решить это.

linux@mylinux:~$ ssh [email protected]
ssh: соединение с хостом XX.XX.XXX.XXX порт 22: Соединение отклонено

linux@mylinux:~$ ssh [email protected] -p 8787
ssh: соединение с хостом XX.XX.XXX.XXX порт 8787: Соединение отклонено

>>>linux@mylinux:~$ ssh [email protected] -vvv
OpenSSH_7.4p1 Ubuntu-10, OpenSSL 1.0.2g  1 Mar 2016
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 19: Применение параметров для *
debug2: разрешение "XX.XX.XXX.XXX" порт 22
debug2: ssh_connect_direct: needpriv 0
debug1: Подключение к XX.XX.XXX.XXX [XX.XX.XXX.XXX] порт 22.
debug1: подключение к адресу XX.XX.XXX.XXX порт 22: Соединение отклонено
ssh: соединение с хостом XX.XX.XXX.XXX порт 22: Соединение отклонено

ssh - статус

>● ssh.service - Сервер OpenBSD Secure Shell
   Загрузили: загружен (/lib/systemd/system/ssh.service; включен; предустановка поставщика: включена)
   Активный: активен (работает) с сб 2017-11-18 15:42:28 IST; 31 мин назад
 Основной PID: 6940 (sshd)
    Задачи: 1 (ограничение: 4915)
   CGroup: /system.slice/ssh.service
           └─6940 /usr/sbin/sshd -D

Также я удалил openssh-sever и переустановил его, но это не дало результата.

Когда я пытаюсь подключиться через localhost, это проходит успешно, но на удалённом сайте соединение отклоняется.

Но я всё равно не могу добиться успеха.

Почему моё SSH-соединение отклоняется?

cat /etc/ssh/sshd_config

Host *

*#    $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

*# Это системный файл конфигурации sshd. См.
*# sshd_config(5) для получения дополнительной информации.

*# Этот sshd был собран с PATH=/usr/bin:/bin:/usr/sbin:/sbin

*# Стратегия использования параметров в конфигурации sshd по умолчанию,
*# поставляемой с OpenSSH, заключается в том, чтобы указывать параметры с их
*# значением по умолчанию там, где это возможно, но оставлять их закомментированными.
*# Раскомментированные параметры переопределяют значение по умолчанию.

*#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

*# Шифры и ключи
*#RekeyLimit default none

*# Логирование
*#SyslogFacility AUTH
*#LogLevel INFO

*# Аутентификация:

*#LoginGraceTime 2m
*#PermitRootLogin prohibit-password
*#StrictModes yes
*#MaxAuthTries 6
*#MaxSessions 10

*#PubkeyAuthentication yes

*# Ожидается, что .ssh/authorized_keys2 будет проигнорирован по умолчанию в будущем.
*#AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2

*#AuthorizedPrincipalsFile none

*#AuthorizedKeysCommand none
*#AuthorizedKeysCommandUser nobody

*# Для этого также потребуются ключи хоста в /etc/ssh/ssh_known_hosts
*#HostbasedAuthentication no
*# Измените на yes, если не доверяете ~/.ssh/known_hosts для
*# HostbasedAuthentication
*#IgnoreUserKnownHosts no
*# Не читайте файлы пользователя ~/.rhosts и ~/.shosts
*#IgnoreRhosts yes

*# Чтобы отключить проксируемые пароли в открытом текстовом формате, измените на нет здесь!
*#PasswordAuthentication yes
*#PermitEmptyPasswords no

*# Измените на yes, чтобы включить пароли с вызовом-ответом (осторожно с проблемами с
*# некоторыми модулями PAM и потоками)
ChallengeResponseAuthentication no

*# Опции Kerberos
*#KerberosAuthentication no
*#KerberosOrLocalPasswd yes
*#KerberosTicketCleanup yes
*#KerberosGetAFSToken no

*# Опции GSSAPI
*#GSSAPIAuthentication no
*#GSSAPICleanupCredentials yes
*#GSSAPIStrictAcceptorCheck yes
*#GSSAPIKeyExchange no

*# Установите это в "yes", чтобы включить аутентификацию PAM, обработку учетных записей,
*# и обработку сеансов. Если это включено, аутентификация PAM будет
*# разрешена через ChallengeResponseAuthentication и
*# PasswordAuthentication.  В зависимости от вашей конфигурации PAM,
*# аутентификация PAM через ChallengeResponseAuthentication может обойти
*# установку "PermitRootLogin without-password".
*# Если вы хотите, чтобы проверки учетных записей и сеансов PAM выполнялись без
*# аутентификации PAM, то включите это, но установите PasswordAuthentication
*# и ChallengeResponseAuthentication в 'no'.
UsePAM yes

*#AllowAgentForwarding yes
*#AllowTcpForwarding yes
*#GatewayPorts no
X11Forwarding yes
*#X11DisplayOffset 10
*#X11UseLocalhost yes
*#PermitTTY yes
PrintMotd no
*#PrintLastLog yes
*#TCPKeepAlive yes
*#UseLogin no
*#UsePrivilegeSeparation sandbox
*#PermitUserEnvironment no
*#Compression delayed
*#ClientAliveInterval 0
*#ClientAliveCountMax 3
*#UseDNS no
*#PidFile /var/run/sshd.pid
*#MaxStartups 10:30:100
*#PermitTunnel no
*#ChrootDirectory none
*#VersionAddendum none

*# нет стандартного пути к баннеру
*#Banner none

*# Разрешить клиенту передавать локальные переменные окружения
AcceptEnv LANG LC_*

*# переопределить стандартное значение без подсистем
Subsystem    sftp    /usr/lib/openssh/sftp-server

*# Пример переопределения настроек по каждому пользователю
*#Match User anoncvs
*#    X11Forwarding no
*#    AllowTcpForwarding no
*#    PermitTTY no
*#    ForceCommand cvs server

Вот здесь

sudo netstat -tlpena | grep -i “ssh”

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          25237      1260/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      0          25239      1260/sshd

И

sudo iptables -S

-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N ufw-after-forward
-N ufw-after-input
-N ufw-after-logging-forward
-N ufw-after-logging-input
-N ufw-after-logging-output
-N ufw-after-output
-N ufw-before-forward
-N ufw-before-input
-N ufw-before-logging-forward
-N ufw-before-logging-input
-N ufw-before-logging-output
-N ufw-before-output
-N ufw-logging-allow
-N ufw-logging-deny
-N ufw-not-local
-N ufw-reject-forward
-N ufw-reject-input
-N ufw-reject-output
-N ufw-skip-to-policy-forward
-N ufw-skip-to-policy-input
-N ufw-skip-to-policy-output
-N ufw-track-forward
-N ufw-track-input
-N ufw-track-output
-N ufw-user-forward
-N ufw-user-input
-N ufw-user-limit
-N ufw-user-limit-accept
-N ufw-user-logging-forward
-N ufw-user-logging-input
-N ufw-user-logging-output
-N ufw-user-output
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input
-A INPUT -j ufw-after-logging-input
-A INPUT -j ufw-reject-input
-A INPUT -j ufw-track-input
-A FORWARD -j ufw-before-logging-forward
-A FORWARD -j ufw-before-forward
-A FORWARD -j ufw-after-forward
-A FORWARD -j ufw-after-logging-forward
-A FORWARD -j ufw-reject-forward
-A FORWARD -j ufw-track-forward
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output
-A ufw-after-input -p udp -m udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp -m udp --dport 68 -j ufw-skip-to-policy-input
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input
-A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-forward -j ufw-user-forward
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ufw-before-input -j ufw-not-local
-A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw-before-input -j ufw-user-input
-A ufw-before-output -o lo -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -j ufw-user-output
-A ufw-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP
-A ufw-skip-to-policy-forward -j DROP
-A ufw-skip-to-policy-input -j DROP
-A ufw-skip-to-policy-output -j ACCEPT
-A ufw-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT --reject-with icmp-port-unreachable
-A ufw-user-limit-accept -j ACCEPT

Редактируйте вашу конфигурацию sshd следующим образом:

Port 22
PermitRootLogin yes

и перезапустите службу sshd. Также, не уверен, почему ваши строки начинаются с *, это проблема форматирования?
Если в конфигурации sshd есть *, пожалуйста, выполните sed -i 's/^*//g' /etc/ssh/sshd_config

Похоже, ваш брандмауэр блокирует соединение. Попробуйте временно отключить его, чтобы убедиться.

Конкретно, на INPUT (не относящиеся части удалены) :

Сначала вы идете к “ufw-before-input”

-P INPUT DROP
...
-A INPUT -j ufw-before-input

Оттуда вы переходите к “ufw-not-local”

-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-input -j ufw-not-local

Что ОТКЛОНЯЕТ всё, что не является “LOCAL”, “MULTICAST” или “BROADCAST”

-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP

Так что ваше

-A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT

похоже, приходит слишком поздно

Ответ или решение

Причины и решение проблемы "SSH: Connection refused"

Сообщение об ошибке "SSH: Connection refused" при попытке подключиться к серверу по протоколу SSH может возникать по нескольким причинам. Обратите внимание на следующие аспекты, чтобы диагностировать и устранить проблему.

1. Статус SSH-сервиса

Сначала убедитесь, что служба SSH работает на удаленном сервере. Наличие следующей строки в статусе службы свидетельствует о том, что служба активна:

Active: active (running)

Если служба не запущена, используйте команду для её старта:

sudo systemctl start ssh

Чтобы служба автоматически запускалась при загрузке системы, выполните:

sudo systemctl enable ssh

2. Конфигурация сервера SSH

Проверьте файл конфигурации SSH-сервера /etc/ssh/sshd_config на наличие возможных ошибок. Ваша конфигурация должна содержать следующую строку для порта:

Port 22

Если вы задали нестандартный порт, убедитесь, что он правильно указан и на него настроено подключение. Для изменения конфигурации используйте редактор, например, nano:

sudo nano /etc/ssh/sshd_config

После внесения изменений не забудьте перезапустить службу SSH:

sudo systemctl restart ssh

3. Защита с помощью файрволов

Согласно вашему выводу команды iptables, политика для входящих соединений (INPUT) установлена на DROP. Это может блокировать соединения, не соответствующие вашим правилам:

-P INPUT DROP

Убедитесь, что правило, разрешающее соединения на порт 22, задано до того, как будет применена политика DROP. В вашем случае правило -A ufw-user-input -p tcp -m tcp --dport 22 -j ACCEPT может срабатывать после того, как трафик уже был заблокирован.

Для временного деактивирования файрвола используйте следующие команды:

sudo ufw disable

Или для iptables:

sudo iptables -F

Замечание: Не забудьте включить файрвол снова после тестирования, чтобы не оставить сервер открытым для уязвимостей.

4. Проблемы с сетью

Если проблема сохраняется, проверьте, работает ли сеть и доступен ли удаленный хост:

ping XX.XX.XXX.XXX

Если пинг не проходит, возможно, проблема в сетевой конфигурации или маршрутизации.

5. Редактирование конфигурационного файла SSH

Если в вашем файле конфигурации sshd_config присутствуют символы *, возможно, это результат проблемы с форматированием. Их следует удалить, чтобы избежать проблем при чтении конфигурации. Для этого выполните следующую команду:

sed -i 's/^\*//g' /etc/ssh/sshd_config

Заключение

Подводя итог, причин для возникновения ошибки "SSH: Connection refused" может быть несколько: неработающий SSH-сервер, неправильные настройки конфигурации, блокировка соединений файрволом или проблемы с сетью. Следуя вышеперечисленным шагам, вы сможете эффективно диагностировать и устранить проблему. Если после всех проверок ошибка не исчезнет, возможно, стоит обратиться к системному администратору для дальнейшей диагностики.

Оцените материал
Добавить комментарий

Капча загружается...