Назад | Перейти на главную страницу

Ошибка ssh - сбой привязки к порту 22: адрес уже используется

Я пытаюсь запустить свой собственный веб-сервер. Я установил новую копию сервера ubuntu и openSSH.

Я могу подключиться к серверу по SSH, используя внутренний IP-адрес (192.168.1.12), но не могу получить к нему доступ через свой внешний IP-адрес. Я настроил переадресацию портов, но все равно получаю сообщение «Отказано в соединении».

Я заметил одну вещь: если я войду на свой веб-сервер и наберу sudo /usr/sbin/sshd -d Я получаю следующие ошибки:

debug1: Bind to port 22 pm 0.0.0.0
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.

Я предполагаю, что это причина моих проблем при попытке использовать ssh с моим внешним адресом? Я пытался отключить ipv6, но при этом исправлена ​​только одна из ошибок.

РЕДАКТИРОВАТЬ: netstat -tan | grep LIST дает следующий результат

tcp    0    0 0.0.0.0:22      0.0.0.0:*      LISTEN
tcp6   0    0 :::22           :::*           LISTEN

netstat -tulpn

Proto Recv-Q  Send-Q   Local Address       Foreign Address      State    PID/Program name
tcp     0       0      0.0.0.0:22            0.0.0.0:*          LISTEN     620/sshd
tcp6    0       0      :::22                 :::*               LISTEN     620/sshd
udp     0       0      0.0.0.0:68            0.0.0.0:*                     604/dhclient3

sshd уже запущен, о чем свидетельствует ваш netstat. Он также привязан ко всем IP-адресам (0.0.0.0 в netstat), поэтому проблем быть не должно.

У вас есть брандмауэр на вашем роутере? У вас может быть включена переадресация портов, но брандмауэр все еще может отбрасывать 22. Также возможно, что ваш интернет-провайдер блокирует 22, прежде чем он даже дойдет до вас. Я бы также сделал iptables -F (отбросил все правила iptables), чтобы быть уверенным; они вернутся после перезагрузки (или вы можете восстановить их с помощью iptables-restore).

Вы можете подтвердить, что sshd не отказывает в подключении, проверив /var/log/auth.log для отклоненных подключений.

Если вы подтвердили, что у вас нет отклоненных подключений в своих журналах и нет брандмауэра на вашем маршрутизаторе, я бы предложил изменить SSH, чтобы использовать порт, отличный от 22 (случайный высокий порт> 1024). Вы можете сделать это, отредактировав /etc/ssh/ssh_config и поменять "Порт 22" на что-то выше.

РЕДАКТИРОВАТЬ: обновите комментарии, чтобы сохранить чтение; вам также следует попробовать выполнить проверку с IP-адреса за пределами вашей сети в подобных обстоятельствах. В этом случае интернет-провайдер блокировал порт 22, и внутреннее подключение к высокому порту (с указанием внешнего IP-адреса) не работало, вероятно, из-за отсутствия закрепленного NAT.

Адрес, который уже используется, обычно означает, что некоторая служба уже работает в соответствующем порту, т.е. 22? Вы проверяли службы прослушивания? ты можешь свалить

netstat -tan | grep LIST