Я обычно предоставляю решения для моих друзей для решения проблем на их машинах с Ubuntu. Большинство из них используют общее интернет-соединение через локальную сеть, где они не могут открыть порты, чтобы я мог получить доступ к своим машинам через ssh. Можно ли подключиться по ssh к машине без открытия портов? Например, такие сервисы, как Teamviewer, позволяют пользователям просто принимать запрос на подключение извне, а если владелец машины разрешает, то машина может использоваться аутентифицированными пользователями. Таким образом, аналогично, если владелец машины разрешает, с некоторой аутентификацией, можно получить доступ по ssh к машине, не открывая порты на маршрутизаторе NAT.
Вы можете сделать это через бэкэнд Эмпатии (телепатия) с помощью другого приложения, называемого ssh-contact .
Я не использовал это лично, но мне кажется, что это хороший способ соединить два новичка в SSH друг с другом.
Конечно, другим способом было бы предоставить вам SSH (я полагаю, вы достаточно компетентны для управления переадресацией портов) и перенаправить порт обратно на ssh-сервер на их машине .
Запустите их для запуска:
ssh -R 48724:localhost:22 your_username@your_ip
Вы, возможно, не захотите, чтобы они входили в систему как ваш пользователь, чтобы вы могли создать другого пользователя и использовать его только для SSHing. Очевидно, между вами и другим пользователем должно быть хоть немного доверия.
И затем вы запускаете:
ssh -p 48724 their_username@localhost
Я использую высокий порт, поэтому права root не требуются.
Конечно, для подключения им потребуется openssh-server
, но это просто sudo apt-get install openssh-server
Любое входящее соединение любыми способами потребует открытия порта. Просто нет другого способа установить сетевое соединение. Если нет существующего порта, который вы можете использовать, вы не можете просто пойти в этом направлении.
Но вы можете пойти другим путем. Если ваш друг открыл ssh-соединение с вашей машиной и перенаправил порт ssh, то вы можете через ssh вернуться через его туннель к его машине. Это дает вам ssh-соединение с его машиной, которое будет существовать только до тех пор, пока остается его ssh (с переадресацией портов).
Этот метод также утки брандмауэров.
Возможно, эта статья о обратном туннеле SSH могла бы вам чем-то помочь: -nat-с-обращенно-SSH-туннель /
С прямой ssh
это невозможно. Однако, вероятно, есть какой-то другой инструмент, который бы выполнил то, что вы пытаетесь сделать.
Вы можете использовать инструмент под названием Ngrok. Это очень легко установить и настроить.
ngrok может обойти ограничения NAT Mapping и брандмауэра, создав долгоживущий TCP-туннель от случайно сгенерированного поддомена на ngrok.com (например, 3gf892ks.ngrok.com) к локальной машине.
После указания порта, который слушает ваш веб-сервер, клиентская программа ngrok инициирует безопасное соединение с сервером ngrok, после чего любой может отправлять запросы на ваш локальный сервер с уникальным адресом туннеля ngrok. Руководство разработчика ngrok содержит более подробную информацию о том, как это работает.
Прочитайте эту статью — Удаленный доступ без переадресации портов.