Как получить доступ к openssh-серверу с внешнего IP-адреса из-за пределов локальной сети
Как я могу использовать мой новый openssh-сервер с внешним IP-адресом вне локальной сети?
Цель состоит в том, чтобы администратор внешнего компьютера из локальной сети мог администрировать openssh-сервер (права root, установку программного обеспечения и данных) через Интернет.
Техническая настройка:
Local Area Network = Router + openssh-server + openssh-client
openssh-server Ubuntu 14.04.1 сервер полное шифрование диска внутренний IP 111.111.111.111, внешний IP-адрес, предоставленный провайдером Интернет-услуг 222.222.222.222, два свободных порта 22 (TCP, UDP), установленных в маршрутизаторе для этого компьютера, пользователь MaximGorki
openssh-client Ubuntu 14.04.1 настольное полное шифрование диска внутренний IP 111.111.111.110, внешний IP-адрес, предоставленный интернет-провайдером 222.222.222.222
Я могу войти в openssh-сервер с openssh-клиента внутри локальной сети (LAN), используя IP-адрес, установленный маршрутизатором для openssh-сервера 111.111.111.111.
С openssh-сервера я хочу соединиться с openssh-сервером с помощью командной строки:
ssh [email protected]
ssh [email protected]
Внутренний IP-адрес работает с паролем.
Внешний IP-адрес не работает с компьютера openssh-клиента, который находится в локальной сети:
ssh: подключение к хосту 222.222.222.222 порт 22: истекло время ожидания соединения
Я также настроил функцию pubkey. Но это не работает. Я не знаю почему. Поэтому я был бы рад получить доступ к openssh-серверу только по парольной аутентификации.
Я хочу проверить, доступен ли openssh-сервер с внешнего IP-адреса.
Что мне нужно настроить или изменить на каком компьютере, как?
Мои ноу-хау в Linux очень ограничены, пожалуйста, приведите полный синтаксис командной строки в качестве примера, если вы видите ответ.
После рекомендации одного ответа я добавил 4 правила в исходный iptables. Iptables теперь выглядит так:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
218 16703 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any 222.222.222.222
0 0 ACCEPT tcp -- any any anywhere tcp dpt:22
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- any any anywhere state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 10 packets, 2082 bytes)
pkts bytes target prot opt in out source
4 ответа
Моя ошибка не состояла в том, чтобы установить порты в ssh_config, sshd_config и маршрутизаторе к тому же числу. Ранее я изменил номера портов. Я перепутал файлы конфигурации для сервера и клиента. Теперь все порты во всех конфигурационных файлах и в маршрутизаторе имеют одинаковый номер. Теперь я могу получить доступ к серверу с клиента, используя внешний IP-адрес.
Проверьте iptables для ограничения брандмауэра. Попробуйте добавить следующие строки в Iptables и проверьте, можете ли вы получить доступ к машине через ssh.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s 222.222.222.222 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Если вышеперечисленное не работает, проверьте настройки маршрутизатора, правильно ли перенаправлен порт
Для этого вам нужно будет перенаправить порт, через который вы пытаетесь подключиться, на вашем маршрутизаторе. Вы можете найти в Google инструкции по этому вопросу, поскольку они сильно различаются у разных производителей и моделей.
Вы гарантировали, что ваш маршрутизатор может (и включил) NAT Loopback / Hairpinning?
Если нет, вы не можете подключиться к устройству в вашей локальной сети через внешний IP. Попробуйте подключить телефон к клиенту, а не использовать подключение к локальной сети для проверки. Или используйте прокси, VPN или попробуйте установить соединение из другой сети.