Вопрос или проблема
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-сервер, неправильные настройки конфигурации, блокировка соединений файрволом или проблемы с сетью. Следуя вышеперечисленным шагам, вы сможете эффективно диагностировать и устранить проблему. Если после всех проверок ошибка не исчезнет, возможно, стоит обратиться к системному администратору для дальнейшей диагностики.