Чому я отримую помилку "порт 22: З'єднання відмовлено"?


70

Я отримую

port 22: Connection refused 

помилка під час підключення до сервера.

У мене встановлено і клієнт opensh, і сервер, і вони працюють. Але все ж є помилка. Будь ласка, допоможіть.


2
Просто для уточнення, чи відкритий сервер встановлений на сервері?
Кевін

Перевірте, чи працює ssh на порту 22, і якщо у вас є правило брандмауера, що блокує порт.
Манула Вайдянатаха

1
На мою думку, налаштуйте брандмауер таким, щоб він міг ssh (порт 22), який на даний момент блокується брандмауером.
Ketan Patel


Це може статися, ймовірно, і через тимчасові втрати мережі. Тож перевірте своє підключення до Інтернету.
user648610

Відповіді:


78

Я пройшов це питання і нарешті отримав відповідну відповідь.

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

Потім увійшов raspi-configу вікно терміналу і включив ssh.

Це дозволить порту 22 використовувати для sshd.


Ту ж проблему, що і @SDsolar
Nadav B

@Nadiv, мені також довелося використовувати raspi-config, щоб увімкнути ssh. Відповідь відредаговано, щоб відобразити це.
SDsolar

Перші три рядки виконано на обох комп'ютерах і файл успішно передається. Чому Ubuntu не поставляється з цими встановленими / включеними за замовчуванням? connection refusedПомилка не настільки загадково, я мав ні найменшого уявлення , якщо це був брандмауер випусків, ім'я користувача, випуск IP - адреса, і т.д. і т.п. Дуже засмучує.
Hatefiend

sudo ufw allow 22працював колись. Знову помилка почала з’являтися.
vinoeshvs

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(або що б там не було)
Джон Д

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

14

Спробуйте це

sudo apt-get remove openssh-client openssh-server

і потім

sudo apt-get install openssh-client openssh-server

це працювало для мене :)

Напевно, не найбільш православне рішення ... :)


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

1
Мені довелося використовувати apt-get purge openssh-server (замість видалення), щоб змусити його працювати.
11101101b

6

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

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

Якщо це спрацювало, ви, мабуть, раніше змінили свій sshd-config.
guntbert

Я редагував sshd_config на Raspbian, намагаючись налаштувати ssh. Це рішення працювало на мене.
Скотт

+1. Єдине рішення, яке спрацювало!
Надав Б

1

Наступні команди працювали для мене:

cd /root/.ssh
vi known_hosts

Тепер видаліть усе з цього файлу та введіть у термінал:

service sshd restart

Джерело: SSH - з'єднання відмовлено


аналогічна проблема для мене, але я очистив свої знані_хости ssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOST, замінивши мого користувача Linux та віддаленого хоста, до якого я намагався підключитися,
Кріс,

1

Це може виправити це і для вас. Спробуйте підключення 22 для переадресації порту з вихідної IP-адреси на ваш локальний IP на тому ж порту. Працював для мене, дозволяючи мені зайти на віддалений комп'ютер ubuntu.


0

У моєму випадку статичний IP був невірним. З'ясував це, зробивши ping <my_ip>після переключення сервера. Він усе ще пінгвірувався, навіть коли сервер був вимкнений. Зміна IP вирішила проблему.

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