Этот ответ основан на принятом, но добавляет детали, которые позволили мне сделать это. Я прошу прощения за объяснение пешехода, так как это совсем не моя экспертиза.
Предположим, у вас есть два компьютера, Aи B. Вы хотите перейти sshот Aк B, и вы не можете выполнять переадресацию портов в подключенных к ним маршрутизаторах.
Как говорится в принятом ответе, для этого вам нужен сервер S: на компьютере Bвы будете разрешать sshисходящие соединения S; и с компьютера A, вы получите доступ к этому туннелю, Sчтобы достичь B.
Но как вы получаете этот сервер S? Я нашел serveo(ссылка: https://serveo.net/ ). Это очень простое использование. Вам не нужно ничего устанавливать или регистрироваться, и это бесплатно. Согласно веб-сайту, следующие шаги:
Подумайте о псевдониме для компьютера B. Например, computer_B_alias.
В компьютере Bвыполните ssh -R computer_B_alias:22:localhost:22 serveo.net.
Теперь вы можете получить доступ к компьютеру Bс компьютера A, выполнив следующие действия на компьютере A:, ssh -J serveo.net user@computer_B_aliasгде вы должны заменить userимя пользователя на компьютере B.
PS: Конечно, вы делаете пункт 2 автоматической задачей при запуске компьютера B.
PSS: прежде чем попробовать это, убедитесь, что sshустановлено на обоих компьютерах. Для Ubuntu, sudo apt-get install sshсделал бы работу.