it-swarm-ru.tech

Что вызывает сообщение «Соединение отказано»?

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

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

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

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

Почему это ?

119
user9517

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

Сообщение "Соединение отклонено" имеет две основные причины:

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

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

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

Sudo netstat -tnlp | grep :22222

или

ss -tnlp | grep :22222

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

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

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

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

Когда предпринимается попытка установить соединение с портом IP: где ничего не прослушивается, ответ удаленной системы на исходный пакет SYN представляет собой пакет с установленными флагами RST, ACK. Это закрывает соединение и вызывает сообщение "Отказано в соединении", например,.

$ 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: Флаги [S] , seq 1207858804, победа 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: Флаги [R.] , seq 0, 1207858805, победа 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 Другие инструменты, вероятно, доступны.

129
user9517

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

Sudo service ssh status

И ничего не нашел (с сообщением ssh: unrecognized service) просто установка службы :

Sudo apt-get install openssh-server

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

5
SharpC

В моем брандмауэре Centos Shorewall не хватило места на диске. сбивает с толку, некоторые сайты, такие как YouTube и MS работали. Другие, как cnn.com не удалось. Очистка некоторого места и перезапуск сервера устранили проблему для меня.

0
Mike Ross