Це канонічне запитання про відмову від з'єднання
Ми бачимо багато питань до цього
Коли я намагаюся підключитися до системи, я отримую повідомлення
З'єднання відхилено
Чому це ?
Це канонічне запитання про відмову від з'єднання
Ми бачимо багато питань до цього
Коли я намагаюся підключитися до системи, я отримую повідомлення
З'єднання відхилено
Чому це ?
Відповіді:
Примітка . Це повідомлення є симптомом проблеми, яку ви намагаєтеся вирішити. Розуміння причини повідомлення, врешті-решт, призведе до вирішення вашої проблеми.
Повідомлення "Підключення відмовлено" має дві основні причини:
Жоден процес прослуховування.
Це, безумовно, найпоширеніша причина повідомлення. Спочатку переконайтеся, що ви намагаєтеся підключитися до правильної системи. Якщо ви повинні визначити, чи це проблема, на віддаленій системі запустіть netstat або ss 1, наприклад, якщо ви очікуєте прослуховування процесу на порту 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, 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: Прапори [R.] , seq 0, ack 1207858805, win 0, довжина 0
Зауважте, що tcpdump використовує a . щоб представляти 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: порт IC22 192.0.2.1 tcp 22222 недоступний, довжина 68
Зауважте, що це також говорить нам, де знаходиться блокувальний брандмауер.
Отже, тепер ви знаєте, що викликає повідомлення про відмову в з’єднанні, вам слід вжити відповідних заходів, наприклад, зв’язатися з адміністратором брандмауера або дослідити причину того, що процес не прослуховується.
1 Можливо, інші інструменти доступні.
Для мене на Debian 6 вичавити це було так само просто, як перевірити службу SSH :
sudo service ssh status
І нічого не знайшлося (із повідомленням ssh: unrecognized service
), просто встановивши сервіс :
sudo apt-get install openssh-server
Це також працює, якщо ви не отримуєте з'єднання SFTP, оскільки SFTP є підмножиною SSH (тоді як FTPS - це підмножина FTP).