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 отказано по следующей причине:
порт по умолчанию (22) был изменен на что-то другое. Проверьте файл /etc/ssh/sshd_config на наличие изменений в порте.
Конфликт IP в локальной сети. Используйте команду arping для определения любого конфликта. увидеть ваш пул dhcp.
Порт ssh не разрешен в ip-таблицах / брандмауэрах. Проверьте ваш iptables / firewall и разрешите.
* Удалить / переустановить пакет ssh не очень хорошая идея, потому что он изменит многие ключи и пройдет.
Брандмауэр вашего сервера настроен так, чтобы порт был открыт, но ничего не слышит, чтобы ответить на ваше соединение.
Вам нужно установить sshd (демон ssh) и запустить...
Одной из наиболее распространенных проблем, вызывающих это, является сама служба 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.