Три метода:
1) Вы можете перенаправить порт 22 на вашем маршрутизаторе в порт на вашем ПК, который слушает демон. Когда вы используете ssh PCuser@Public_IP_of_PC
(22 - порт по умолчанию, если другой порт перенаправляется, передайте его с аргументом -p), вы получите доступ к ПК за маршрутизатором. Точная динамика процесса подробно объясняется здесь: https://unix.stackexchange.com/questions/19620/ssh-port-forward-to-access-my-home-machine-from-anywhere
2) Создайте обратный ssh-туннель от ПК за маршрутизатором к ноутбуку (при условии, что у ноутбука есть определенный IP) как таковой:
ssh -v -N -R port_of_laptop:localhost:local_port_of_pc laptop_user@$laptop_ip
(однако ноутбук также находится за маршрутизатором, на этот раз порт должен быть перенаправлен с маршрутизатора ноутбука поверх порта на ноутбуке.)
На стороне ноутбука вы просто ssh как таковой:
ssh -v -p port_of_laptop@localhost
3) Или вы можете настроить сервер OpenVPN, прослушивающий порт UDP 1194 (лучший способ - использовать экземпляр micro EC2 свободного уровня на AWS с эластичным IP). Тогда вы сделаете свой ноутбук и ПК клиентов внутри одной VPN. Таким образом, при подключении к VPN через интерфейс tun0 все клиенты могут получать доступ друг к другу, как будто они находятся в одной локальной сети, даже если на самом деле это не так. соединение клиент-клиент также должно быть включено. Хорошая вещь в том, что подход заключается в том, что вам не нужно отслеживать адрес маршрутизатора, к которому подключен ПК (если он имеет динамический IP-адрес, который изменяется при каждой перезагрузке / переподключении).
ssh PCuser@IP_of_PC_given_by_tun0