Сервер SSH не відповідає на запити на з'єднання


14

Я намагаюся встановити SSH-сервер на своїй локальній машині за допомогою OpenSSH. Коли я намагаюся SSH з віддаленого хоста на локальний SSH-сервер, SSH-сервер не відповідає, а запит ігнорується. Я майже впевнений, що для цього є дійсно очевидний виправлення, який я просто не помічаю.

Ось що відбувається, коли я намагаюся ввести SSH з віддаленого хоста:

yoshimi@robots:/$ ssh -vv volt@99.3.26.94
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out

Де robotsмій віддалений хост і 99.3.26.94мій локальний сервер SSH.

SSH працює

volt@arnold:~$ ps -A | grep sshd
 5784 ?        00:00:00 sshd

Де arnoldмій локальний SSH-сервер.

Перенаправлення портів встановлюється на маршрутизаторі

У мене домашній маршрутизатор налаштований для пересилання портів 80 і 22 на мій сервер SSH. Цікаво, що порт 80 працював без перешкод - йде прямо до веб-каталогу Apache. Порт 22 - не так вже й багато.

NMap каже, що це фільтрується

yoshimi@robots:/$ nmap -p 22 99.3.26.94

Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds

Де robotsмій віддалений хост і 99.3.26.94мій локальний сервер SSH.

Це не IPTables (я думаю)

volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

... І у мене немає інших брандмауерів - це відносно свіжий Debian netinst.

Отже, тоді: Що ще могло бути? Звичайно, це є брандмауером, який просто ігнорує трафік, але якщо це не маршрутизатор, це не iptables, і це не інший брандмауер на сервері SSH, ... що за чорт там ще ??

РЕДАКТУВАННЯ: Запит на підключення через помилку внутрішньої мережі

yoshimi@robots:/$ ssh volt@192.168.1.90
ssh: connect to host 192.168.1.90 port 22: No route to host

1
Ви пробували SSH'ing з комп'ютера за маршрутизатором (внутрішньо)? Також дивіться це .
saiarcot895

Дякуємо за довідковий матеріал, @ saiarcot895. Також див. Редагування.
kittykittybangbang

Що це за IP-адреса комп'ютера, на якій ви намагалися зробити вищезгадане ^? Ви можете пінг це?
111 ---

В першу чергу перевірки , якщо що - то , якщо не брати адреса arping remotehostповинен відповідати тільки один Hw адреса, а потім перевірити , якщо hwaddress є дозвіл перевірки same.Then з dig remotehostі dig -x remoteip, а потім перевірити , якщо віддалений хост не вказує на 127.0.0.1, для цієї перевірки / etc / hosts віддалених. І, нарешті, спробуйте вимкнути брандмауер та перевірити, чи запускається ssh-процес.
elbarna

Це також може допомогти тим tail -fфайлам журналу, на які ви вказали sshd для виводу. Якщо в журналах немає абсолютно нічого, швидше за все, проблема між двома пристроями, а не на сервері ssh.
0xШепдог

Відповіді:


18

Дуже невтішна самовідповідь

Відклавши цю проблему на один день і повернувшись до неї, я був і полегшений, і збуджений (більше збурений, ніж полегшений), виявивши, що все, загадково, працює належним чином.

Отже, що було проблемою?

Жодні налаштування не були змінені або відрегульовані - не на маршрутизаторі, не на сервері SSH і не на машині клієнта SSH. Досить безпечно сказати, що маршрутизатор неправильно обробляє вхідний трафік, незважаючи на належні налаштування. З огляду на те, що програмне забезпечення для домашнього маршрутизатора dinky насправді не розроблене для вирішення питань переадресації портів, знадобилось небагатому хлопцеві час, щоб здійснити необхідні зміни.

Але це було як 6 годин !!

Ага чувак, я знаю. Я провів весь день , намагаючись з'ясувати , що трапилося - і не коли - небудь не знайшов , тому що там не було нічого поганого. Очевидно, що для введення в дію налаштувань маршрутизатора може знадобитися 6 годин - можливо більше.

Тож як я можу знати, якщо це моя проблема?

Чудовий інструмент, на який я натрапив під час цієї ескапади, - це tcpdump. Цей худий маленький хлопець нюхає трафік для вас, пропонуючи цінне розуміння того, що насправді відбувається. Крім того, у нього є кілька функцій супер фільтрації, які дозволяють вам звузити саме те, що ви хочете подивитися / для. Наприклад, команда:

tcpdump -i wlan1 port 22 -n -Q inout

Повідомляє tcpdumpшукати трафік через інтерфейс WLAN1 ( -i«інтерфейс» =), тільки через порт 22, ігноруючи дозвіл імен DNS ( -n= «ні дозволу імен»), і ми хочемо , щоб побачити як вхідний і вихідний трафік ( -Qприймає in, outабо inout; inoutза замовчуванням).

Запустивши цю команду на своєму сервері SSH під час спроби підключення через віддалену машину, швидко стає зрозуміло, де саме полягає проблема. По суті, є три можливості:

  1. Якщо ви бачите вхідний трафік з віддаленої машини, але немає вихідного трафіку з вашого локального сервера, проблема полягає в сервері: можливо, існує правило брандмауера, яке потрібно змінити тощо.
  2. Якщо ви бачите як вхідні, так і вихідні , але ваш віддалений апарат не отримує відповіді, це, швидше за все, маршрутизатор: він дозволяє вхідний трафік, але скидає вихідні пакети.
  3. Якщо трафіку взагалі немає , це, мабуть, і проблема маршрутизатора: SYNпакети віддаленої машини ігноруються та скидаються маршрутизатором ще до того, як вони навіть дістануться вашого сервера.

І як тільки ви виявили, де проблема криється, виправлення (як правило) тривіальне.


1
Дивовижний соус за ваш "невтішний відповідь"! Бонусні бали за ваше ім’я користувача .... Я проходжу по колу дві машини в одній локальній мережі! Виходить маршрутизатор Evil Bell - це лайно! Це дозволяє мені підключати лише ONCE. Потім пізніше, коли я намагаюся знову підключитися, він відмовляється направляти мене! Я можу навіть SSH ІНШИЙ спосіб просто чудово. Ну хоч раз. Цікаво, чи це не спрацює і через кілька годин ..
Річард Кук,

Нічого собі, я цілий день тягнув за собою волосся - схоже, у мене також є проблема "Злого дзвоника". @RichardCooke: яке було твоє рішення?
Джон Доу

@JohnDoe: Замінений роутер. Модель Asus, що знаходиться в списку апаратних засобів, затверджених DD-WRT. Більше ні шнаніганів, і я встановлю DD-WRT!
Річард Кук

3

Я запускаю монетний двір (Ubuntu).

Я зробив би все ... відкритий ключ у правильному форматі в авторизованих_контрольних клавішах, chmodding, клоунінг, перезапуск ssh та sshd тощо. Як це було документально підтверджено всюди.

Для мене це був брандмауер ufw. Відсутність будь-якої відповіді на ssh взагалі наштовхнула мене на це, але я не міг пінговувати жодних проблем в локальній мережі.

Я перевірив:

sudo ufw service stop

... і це спрацювало чудово, тобто я отримав відповідь від дзвінка ssh.

Отже, почніть ufw знову:

sudo ufw service start

... і додати правило:

sudo ufw allow openssh

Зараз все нормально працює.


Це ( ufw) вирішило мою проблему на Ubuntu 16.04. Я сліпо слідував інструкціям щодо встановлення Дженкінса і ввімкнув ufwцей процес. Після відключення sshd знову працює.
Penghe Geng

1

Якщо ви, як і я, увімкнули UFW (на Linux, Ubuntu в моєму випадку), спробуйте це:

sudo ufw enable OpenSSH

Це дозволить OpenSSH у брандмауері.


1
Я просто замкнувся, і почуваюся надзвичайно дурним. Але це було насправді.
понеділок

0

Просто для інших:

Мені довелося використовувати параметр -P в tcpdump замість -Q

tcpdump -i wlan1 port 22 -n -P inout

Я схвалюю це, якщо ви визначите ім'я дистрибутива / версію, яку ви використовуєте.
Річард Кук

0

Більшу частину часу брандмауер є винуватцем. Зробіть service iptables stopі service ip6tables stop.

Якщо зупинка служби не працює, виконайте промивку iptable.

iptables --flush.

Якщо його VM, то зробіть те ж саме і в хості

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.