Поскольку система может находиться за NAT или брандмауэром, вы не можете гарантировать какое-либо подключение. Даже если вы знали его общедоступный IP-адрес, маловероятно, что вы сможете установить соединение с ящиком извне.
Таким образом, следующая лучшая вещь - это чтобы само устройство инициировало соединение с одним или несколькими известными серверами. Исходящее соединение имеет гораздо больше шансов обойти любые межсетевые экраны и важно для прохождения NAT.
Чтобы это работало, вам понадобится сервер с некоторым процессом, который прослушивает соединения по фиксированному адресу и порту и готов переадресовывать ваши сеансы SSH на любое такое соединение. Сама коробка должна будет периодически пытаться установить исходящее соединение с этим сервером, возможно, ежечасно.
Самым простым было бы иметь скрипт /etc/rc.init (или любой другой эквивалент в вашем конкретном дистрибутиве Linux), который периодически пытается установить ssh-туннель. Это может выглядеть примерно так:
ssh -i remotekey.pem -R 33333:localhost:22 user@my.server.com
Предполагается, что вы настроили «пользователя» для входа на основе ключа, используя «remotekey.pem» на вашем сервере.
Затем с вашего сервера вы должны войти в удаленный ящик, используя
ssh -p 33333 boxuser@localhost
Предполагается, что "boxuser" является действительным пользователем на вашем удаленном ящике.