Что является причиной сообщения «Подключение отклонено»?

Что является причиной сообщения «Подключение отклонено»?

ЭтоКанонический вопросоВ соединении отказано

Мы видим много вопросов по этому поводу

Когда я пытаюсь подключиться к системе, я получаю сообщение

В соединении отказано

Почему это ?

решение1

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

Сообщение «Подключение отклонено» может возникнуть по двум основным причинам:

  1. На IP-порте, к которому вы пытаетесь подключиться, ничего не прослушивается.
  2. Порт заблокирован брандмауэром.

Ни один процесс не слушает.

Это, безусловно, самая распространенная причина сообщения. Сначала убедитесь, что вы пытаетесь подключиться к правильной системе. Если вы хотите определить, является ли это проблемой, на удаленной системе запуститенетстатилиSS1 например, если вы ожидаете, что процесс будет прослушивать порт 22222

sudo netstat -tnlp | grep :22222

или

ss -tnlp | grep :22222

Для OSX подходящая команда:

sudo netstat -tnlp tcp | grep '\.80 '

Если ничего не прослушивается, то вышеприведенное не даст никакого вывода. Если вы видите какой-либо вывод, подтвердите, что это то, что вы ожидаете, затем см. раздел брандмауэра ниже.

Если у вас нет доступа к удаленной системе и вы хотите подтвердить наличие проблемы, прежде чем сообщать о ней соответствующим администраторам, вы можете использовать tcpdump (wireshark или аналогичный).

При попытке подключения к IP:port, где ничего не прослушивается, ответом удаленной системы на начальный пакет SYN является пакет с установленными флагами RST,ACK. Это закрывает соединение и вызывает сообщение Connection Refused, например

$ sudo tcpdump -n хост 192.0.2.1 и порт 22222
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивания на enp14s0, тип соединения EN10MB (Ethernet), размер захвата 262144 байт

12:31:27.013976 IP 192.0.2.2.34390 > 192.0.2.1.22222: Флаги[С], seq 1207858804, win 29200, параметры [mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7], длина 0

12:31:27.020162 IP 192.0.2.1.22222 > 192.0.2.2.34390: Флаги[Р.], seq 0, ack 1207858805, win 0, длина 0

Обратите внимание, что tcpdump использует.кпредставляют ACKфлаг.

Порт заблокирован брандмауэром

Если порт заблокирован брандмауэром, а брандмауэр настроен на ответ, icmp-port-unreachableэто также вызовет сообщение об отказе в подключении. Опять же, вы можете увидеть это с помощью tcpdump (или аналогичного)

$ sudo tcpdump -n icmp
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола

прослушивание на enp14s0, тип соединения EN10MB (Ethernet), размер захвата 262144 байт 13:03:24.149897 IP 192.0.2.1 > 192.0.2.2: ICMP 192.0.2.1 tcp порт 22222 недоступен, длина 68

Обратите внимание, что это также говорит нам, где находится блокирующий брандмауэр.


Теперь, когда вы знаете, что является причиной сообщения «Подключение отклонено», вам следует предпринять соответствующие действия, например, обратиться к администратору брандмауэра или выяснить причину, по которой процесс не прослушивает соединение.

1 Вероятно, доступны и другие инструменты.

решение2

Для меня на Debian 6 squeeze это было так же просто, какпроверка службы SSH:

sudo service ssh status

И не найдя ничего существующего (с сообщением ssh: unrecognized service) простоустановка сервиса:

sudo apt-get install openssh-server

Это также работает, если вы не получаете соединение SFTP, поскольку SFTP является подмножеством SSH (тогда как FTPS является подмножеством FTP).

решение3

Что является причиной сообщения «Подключение отклонено»?

  • НеправильноУказан IP-адрес или номер порта.
  • Серверное приложение — этоне бегатьдля прослушивания этого порта.
  • Серверное приложение запущено, ноНе слушатьна указанном порту.
  • Локальный/Удаленныйбрандмауэрблокировка соединения.
  • Перегрузка сервераили истощение ресурсов.

Связанный контент