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

<blockquote> <p>это <a href="http://meta.serverfault.com/questions/1986">канонический вопрос</a> о <strong> соединение отказано </strong></p> </blockquote><p>мы видим много вопросов об этом</p><blockquote> <p>когда я пытаюсь подключиться к системе, я получаю сообщение</p> <p>в соединении отказано</p> <p>почему это ?</p> </blockquote>

<blockquote> <p><strong> примечание </strong>: это сообщение является признаком проблемы, которую вы пытаетесь решить. понимание причины сообщения в конечном итоге приведет вас к решению вашей проблемы.</p> </blockquote><p>сообщение "соединение отклонено" имеет две основные причины:</p><ol> <li>ничего не прослушивает ip: порт, к которому вы пытаетесь подключиться.</li> <li>порт заблокирован брандмауэром.</li> </ol><p><strong> ни один процесс не слушает. </strong></p><p>это, безусловно, самая распространенная причина сообщения. сначала убедитесь, что вы пытаетесь подключиться к правильной системе. если вы хотите определить, в этом ли проблема, на удаленной системе запустите <a href="http://linux.die.net/man/8/netstat">netstat</a> или <a href="http://linux.die.net/man/8/ss">ss</a> <sup>1</sup> например если вы ожидаете, что процесс будет прослушивать порт 22222</p><pre><code>sudo netstat -tnlp | grep :22222 </code></pre><p>или</p><pre><code>ss -tnlp | grep :22222 </code></pre><p>для osx подходящая команда</p><pre><code>sudo netstat -tnlp tcp | grep '\.80 ' </code></pre><p>если ничего не слышно, то вышеприведенное не даст никакого выхода. если вы видите какой-то вывод, убедитесь, что это то, что вы ожидаете, а затем посмотрите раздел брандмауэра ниже.</p><p>если у вас нет доступа к удаленной системе и вы хотите подтвердить проблему, прежде чем сообщать об этом соответствующим администраторам, вы можете использовать tcpdump (wireshark или аналогичный).</p><p>когда предпринимается попытка установить соединение с портом ip: где ничего не прослушивается, ответ удаленной системы на исходный пакет syn представляет собой пакет с установленными флагами rst, ack. это закрывает соединение и вызывает сообщение "отказано в соединении", например,.</p><blockquote> <p>$ 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: флаги <strong> [s] </strong>, 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: флаги <strong> [r.] </strong>, seq 0, 1207858805, победа 0, длина 0 </blockquote>обратите внимание, что tcpdump использует <strong>. </strong> для <a href="http://article.gmane.org/gmane.network.tcpdump.devel/6383">представляет ack флаг.<strong> порт заблокирован брандмауэром </strong>если порт заблокирован брандмауэром и брандмауэр настроен на ответ icmp-port-unreachable это также приведет к сообщению об отказе в соединении. опять же, вы можете увидеть это с помощью tcpdump (или аналогичного)<blockquote> $ sudo tcpdump -n icmp<br> tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола<br> <br> прослушивание 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</p> </blockquote><p>обратите внимание, что это также говорит нам, где находится блокирующий брандмауэр.</p><hr><p>итак, теперь вы знаете, что вызывает сообщение "отказано в соединении", и вы должны предпринять соответствующие действия, например обратитесь к администратору брандмауэра или выясните причину, по которой процесс не прослушивается.</p><p><sup>1</sup> другие инструменты, вероятно, доступны.</p>

<p>для меня в debian 6 squeeze это было так просто, как <a href="http://ubuntuforums.org/showthread.php?t=2203457&p=12918846#post12918846">проверка службы ssh</a> :</p><pre><code>sudo service ssh status </code></pre><p>и ничего не нашел (с сообщением <code>ssh: unrecognized service</code>) просто <a href="http://www.linuxquestions.org/questions/linux-networking-3/ssh-connection-refused-339510/#post3705553">установка службы</a> :</p><pre><code>sudo apt-get install openssh-server </code></pre><p>это также работает, если вы не получаете соединение sftp, поскольку sftp - это подмножество ssh (тогда как ftps - это подмножество ftp).</p>

<p>в моем брандмауэре centos shorewall не хватило места на диске. сбивает с толку, некоторые сайты, такие как youtube и ms работали. другие, как cnn.com не удалось. очистка некоторого места и перезапуск сервера устранили проблему для меня.</p>