Почему я получаю сообщение об ошибке «порт 22: соединение отказано»?


70

Я получаю

port 22: Connection refused 

ошибка при подключении к серверу.

У меня установлены клиент и сервер openssh, и они работают. Но все равно есть ошибка. Пожалуйста помоги.


2
Просто чтобы уточнить, установлен ли на сервере сервер openssh?
Кевин

Проверьте, работает ли ssh на порту 22, и если у вас есть правило брандмауэра, блокирующее порт.
Манула Вайдьяната

1
По моему мнению, настройте брандмауэр таким образом, чтобы он позволял использовать ssh (порт 22), который в настоящее время заблокирован брандмауэром.
Кетан Патель

Sudo UFW включить askubuntu.com/questions/417998/...

Это может произойти, вероятно, из-за временной потери сети. Так что проверьте ваше интернет соединение.
user648610

Ответы:


78

Я прошел этот вопрос и, наконец, получил соответствующий ответ.

sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22

Затем зашел raspi-configв окно терминала и включил ssh.

Это позволит использовать порт 22 для sshd.


Здесь та же проблема, что и у @Sdsolar
B

@ Надив, мне также пришлось использовать raspi-config для включения ssh. Ответ был отредактирован, чтобы отразить это.
SDsolar

Выполнены первые три строки на обоих компьютерах и файл теперь успешно передан. Почему Ubuntu не поставляется с этими установленными / включенными по умолчанию? connection refusedОшибка не столь загадочно, я имел ни малейшего представления , если это был брандмауэр выпусков, имя пользователя, выпуск IP - адрес, и т.д. и т.п. Очень расстраивает.
Hatefiend

sudo ufw allow 22работал один раз. Опять ошибка стала появляться.
Vineseshvs

32

Находясь на сервере, убедитесь, что sshd действительно работает и прослушивает порт 22:

$ sudo netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd       

Если вы не получаете результатов, или они не показывают, что вы слушаете tcp 0.0.0.0:22 ... исправьте это.

Если вы действительно показываете, что sshd работает и прослушивает tcp порт 22, убедитесь, что на пути нет правил брандмауэра. Опять же на сервере:

$ sudo iptables -L | grep ssh
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 

Или поочередно,

$ sudo ufw verbose
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22/tcp                     DENY        Anywhere

Если вы видите правило, подобное одному из приведенных выше, вам нужно это исправить.

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


1
а можно ли подключаться к другим серверам?
opensourcechris

2
Эй, спасибо за ответ, у меня не порт 22, а 2222. Вы сказали, исправьте это, но как?
Йогеш Дарджи

Мой не дал результатов.
SDsolar

исправить это с помощью: sudo ufw allow 22(или независимо от того, какой у вас порт)
John D

netstat устарел (и не устанавливается по умолчанию в более новых версиях Ubuntu - команда 'netstat' не найдена, но может быть установлена ​​с ... ). Возможно обновление для iproute2 ?
Питер Мортенсен

14

Попробуй это

sudo apt-get remove openssh-client openssh-server

а потом

sudo apt-get install openssh-client openssh-server

у меня это сработало :)

Наверное, не самое ортодоксальное решение ... :)


3
Использование dpkg-reinfigure было бы легче использовать вместо решения удаления / переустановки
Стивен Майкл Келлат

1
Мне пришлось использовать apt-get purge openssh-server (вместо remove), чтобы заставить его работать.
11101101b

6

Наткнулся на такую ​​же проблему после установки Raspbian. Решение, которое сработало для меня:

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

Если это сработало, вы должны были изменить свой sshd-config раньше.
Гюнтберт

Я отредактировал sshd_config на Raspbian, пытаясь настроить ssh. Это решение сработало для меня.
Скотт

+1. Единственное решение, которое сработало!
Nadav B

1

Следующие команды работали для меня:

cd /root/.ssh
vi known_hosts

Теперь удалите все в этом файле и введите в терминал:

service sshd restart

Источник: SSH - соединение отказано


похожая проблема для меня, но я очистил свой known_hosts с ssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOSTзаменой в моем linux-пользователе и удаленном хосте, к которому я пытался подключиться
Крис

1

Это может исправить это и для вас. Попробуйте перенаправить соединение 22 с вашего исходящего IP-адреса на локальный IP-адрес того же порта. Работал для меня, позволяя мне ssh в удаленный компьютер Ubuntu.


0

Статический IP был неправильным в моем случае. Об этом узнал ping <my_ip>после переключения сервера. Это все еще пинговало, даже когда сервер был выключен. Изменение IP решило проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.