Этот ответ основан на принятом, но добавляет детали, которые позволили мне сделать это. Я прошу прощения за объяснение пешехода, так как это совсем не моя экспертиза.
Предположим, у вас есть два компьютера, 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 сделает эту работу.