Я пытаюсь запустить свой собственный веб-сервер. Я установил новую копию сервера 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