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

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

ssh: connect to host <host> port 22: Connection refused

Я не вижу сообщений об ошибках, когда пишу dmesg но я получаю от telnet localhost 22

Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Я попробовал решения, которые я видел в некоторых похожих случаях [1] и [2], но это все еще не решило мою проблему: входы и выходы следующие:

>> sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
>> sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

Обратите внимание, что это уже было ПРИНЯТЬ У меня не было никаких проблем даже до ввода команды sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT, Я также пытался перезагрузить SSH, но это ничего не изменило

>>netstat -a | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:20128         *:*                     LISTEN     
tcp        0      0 localhost:17600         *:*                     LISTEN     
tcp        0      0 localhost:20129         *:*                     LISTEN     
tcp        0      0 localhost:17603         *:*                     LISTEN     
tcp        0      0 localhost:21128         *:*                     LISTEN     
tcp        0      0 deathstar:domain        *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 *:db-lsp                *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:db-lsp             [::]:*                  LISTEN 

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

Отдых добавляется после комментария @ Ашу

sudo lsof -i | grep ssh

ничего не случилось

>>netstat -l --numeric-ports | grep 22
unix  2      [ ACC ]     STREAM     LISTENING     1618183  @jack-com.canonical.Unity.Master.Scope.files.T1731348652205882

>>sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

Отредактировано после комментария @TheSchwa

>>ps aux | grep sshd
jack      3711  0.0  0.0  15944  2220 pts/26   S+   14:08   0:00 grep --color=auto sshd

9 ответов

Решение

Сначала я попытался удалить и переустановить ssh, но у меня это не сработало, затем я попытался очистить его:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

так что теперь это работает.

Ошибка TCP "Соединение отказано" означает, что на этом IP-адресе есть активный хост, но порт, к которому вы пытались подключиться (22 для ssh), не открыт.

Прежде всего, дважды проверьте ваше имя хоста и / или IP-адрес.

Наиболее вероятная причина: кто-то остановил демон ssh или кто-то настроил его на использование альтернативного порта вместо 22 по умолчанию.

Если у вас есть физический доступ к серверу, войдите на этот сервер и введите команду sudo netstat -tupan, В идеале вы должны увидеть строку вроде:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1053/sshd

Если вы не попробуете запустить sshd и / или проверить, настроен ли он на прослушивание через порт 22.

РЕДАКТИРОВАТЬ

Биты, на которых нужно сосредоточиться:

:22 - порт 22

LISTEN - есть процесс, работающий и ожидающий входящие соединения через порт 22

sshd - название процесса.

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

Соединение SSH отказано по следующей причине:

  1. порт по умолчанию (22) был изменен на что-то другое. Проверьте файл /etc/ssh/sshd_config на наличие изменений в порте.

  2. Конфликт IP в локальной сети. Используйте команду arping для определения любого конфликта. увидеть ваш пул dhcp.

  3. Порт ssh не разрешен в ip-таблицах / брандмауэрах. Проверьте ваш iptables / firewall и разрешите.

* Удалить / переустановить пакет ssh не очень хорошая идея, потому что он изменит многие ключи и пройдет.

Брандмауэр вашего сервера настроен так, чтобы порт был открыт, но ничего не слышит, чтобы ответить на ваше соединение.

Вам нужно установить sshd (демон ssh) и запустить...

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring

Одной из наиболее распространенных проблем, вызывающих это, является сама служба sshd. Вы проверили, действительно ли он работает? Кроме того, я заметил, что вы напрямую редактируете свои iptables, так что, если у вас запущен ufw/firewalld - возможно, стоит это проверить.

Также убедитесь, что сервер ssh работает с правильным IP-адресом, а полное доменное имя направляется на правильный IP-адрес.

Вы должны создать отсутствующий каталог, как это

mkdir /var/run/sshd
chmod 0755 /var/run/sshd

Затем запустите неисправный сервер с помощью:

service ssh start

И это все!

У меня было это, потому что у меня не было sudo ufw allow ssh Я просто sudo ufw allow 22чего было недостаточно

[root@fakeser ~]# ufw status
Status: active

To                         Action      From
--                         ------      ----
22 on eth1                 ALLOW       Anywhere        
Nginx HTTP                 ALLOW       Anywhere        
Nginx HTTPS                ALLOW       Anywhere        
22 (v6) on eth1            ALLOW       Anywhere (v6)   
Nginx HTTP (v6)            ALLOW       Anywhere (v6)   
Nginx HTTPS (v6)           ALLOW       Anywhere (v6)   

ВЫШЕ НЕ РАБОТАЕТ

НИЖЕ РАБОТАЕТ

[root@fakeser ~]# ufw allow ssh
Rule added
Rule added (v6)
[root@fakeser ~]# ufw status
Status: active

To                         Action      From
--                         ------      ----
22 on eth1                 ALLOW       Anywhere        
Nginx HTTP                 ALLOW       Anywhere        
Nginx HTTPS                ALLOW       Anywhere        
22/tcp                     ALLOW       Anywhere        
22 (v6) on eth1            ALLOW       Anywhere (v6)   
Nginx HTTP (v6)            ALLOW       Anywhere (v6)   
Nginx HTTPS (v6)           ALLOW       Anywhere (v6)   
22/tcp (v6)                ALLOW       Anywhere (v6)   

В некоторых случаях я заметил, что процесс ssh необходимо перезапустить вручную, используя sudo apt install openssh sudo service ssh start

Другая возможная проблема: маршрутизатор сети вашего клиента блокирует SSH-соединения. Мой компьютер автоматически подключился к нашему гостевому Wi-Fi, переключение на обычный Wi-Fi решило проблему. Это также может быть проблемой, если вы используете общедоступный Wi-Fi.

Другие вопросы по тегам