Соединение ssh отклонено с того же ПК при выходе за пределы локальной сети

[1168404] Здесь я делаю некоторые обоснованные предположения:[12130]На машине linux выполняется какая-то графическая сессия, скорее всего, это xserver.[12131]Используя ssh-соединение, вы не можете получить доступ к этому xserver. [12132]Вы можете попробовать следующее:[12133]Вы копируете новую презентацию на машину Linux.[12134]Предположим, что ваша программа презентации называется [1168931]foo[1168932] (пожалуйста, расскажите нам, как она называется), вы можете убить ее, используя [1168933]killall foo[1168934] или [1168935]pkill foo[1168936]. Это сработает, если вы используете правильного пользователя (или root, которого не должно быть).[12135]Чтобы запустить графическое приложение, вам нужно установить переменную [1168943]DISPLAY[1168944] в вашем скрипте ssh. Скорее всего, сработает следующее (если нет, см. [1168945]Открыть окно на удаленном X дисплее (почему "Cannot open display")?[1168946]).[12136]Export DISPLAY=":0". [12137]Теперь вы должны снова запустить [1168941]foo[1168942] и он должен отобразиться на экране.[12138]Возможно, вы захотите создать скрипт для этого (сделайте исполняемый [1168755]chmod u+x restart-foo.sh[1168756]):[12139] Вы можете выполнить это с помощью ssh (зависит от вашего windows ssh-client, я полагаю) с помощью[12140]
1
06.09.2015, 22:12
1 ответ

Вы не сможете подключиться к имени сервера NAT'ed с узла, который является местом назначения NAT. Причина в том, что в этом случае очень просто NAT прерывает TCP/IP. Просто пройдитесь по тому, что происходит на уровне TCP, и вы поймете, почему это не должно работать:

  1. с 192.168.10.10 вы посылаете SYN пакет на myhost.duckdns.org (внешний IP адрес)
  2. этот запрос проходит через ваш маршрутизатор и получает NAT'ed на 192.168.10:8000
  3. 192.168.10:8000 запрос с оригинальным IP-адресом источника 192. 168.10.10 (так как маршрутизатор, который сделал NAT переписал только пункт назначения)
  4. 192.168.10.10:8000 отвечает обратно на 192.168.10.10 (запросчик)
  5. Запросчик игнорирует ответ с 192.168.10.10:8000, так как ожидал ответа от myhost.duckdns.org (внешний IP-адрес)

Это и есть причина такого поведения в двух словах. Одним из возможных решений будет определение маскирующего правила на вашем маршрутизаторе, чтобы убедиться, что если кто-то из внутренней сети попытается связаться с NAT'ed портом, он пройдет через маршрутизатор в обоих направлениях. Еще одним вариантом будет определение myhost.duckdns.org с 127.0.0.1 в вашем локальном /etc/hosts.

4
27.01.2020, 23:20

Теги

Похожие вопросы