Отказано в подключении по 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 -LChain INPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sshChain 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 

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

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

sudo lsof -i | grep ssh

ничего не произошло

>>netstat -l --numeric-ports | grep 22unix  2      [ ACC ]     STREAM     LISTENING     1618183  @jack-com.canonical.Unity.Master.Scope.files.T1731348652205882>>sudo iptables --listChain INPUT (policy ACCEPT)target     prot opt source               destination         ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:sshChain FORWARD (policy ACCEPT)target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)target     prot opt source               destination 

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

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

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

sudo apt-get purge openssh-serversudo 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 / брандмауэр и разрешите.

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

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

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

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

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

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

Вы должны создать отсутствующий каталог следующим образом

mkdir /var/run/sshdchmod 0755 /var/run/sshd

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

service ssh start

И это все!

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

[root@fakeser ~]# ufw statusStatus: activeTo                         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 sshRule addedRule added (v6)[root@fakeser ~]# ufw statusStatus: activeTo                         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)   

На какой машине вы используете “telnet localhost 22”? Есть ли у вас какой-либо способ получить доступ к удаленной машине, кроме ssh?

можете ли вы попробовать эти команды ‘sudo lsof -i | grep ssh’, ‘netstat -l --numeric-ports | grep 22’, ‘sudo iptables --list’

@Ashu я добавил их в вопрос.

@TheSchwa Я могу физически получить доступ к машине, если вы спрашиваете об этом, и все вышеприведенные команды выполнялись на машине, к которой я пытаюсь подключиться по ssh.

Проверьте, запущен ли sshd на удаленном компьютере с помощью “ps aux | grep sshd”.

@TheSchwa добавил выходные данные в вопрос

Итак, “sshd” - это программа, которая запускается на удаленном компьютере и позволяет вам подключаться к нему по ssh. Если он не запущен, вы не сможете подключиться к ssh. Попробуйте запустить sudo service sshd start на удаленном компьютере и опубликуйте выходные данные. Если он говорит “УСПЕХ”, попробуйте снова “ssh” и посмотрите, исправлено ли это.