Для удаленного доступа к устройствам с Linux в условиях, когда нет публичного IP-адреса, вы можете рассмотреть несколько вариантов:
1. **SSH (Secure Shell)**: Если у вас есть возможность настроить сервер, который будет принимать входящие соединения, вы можете использовать SSH для удаленного доступа. Для этого можно настроить туннелирование или использовать сервисы вроде [ngrok](https://ngrok.com/) или [frp](https://github.com/fatedier/frp). Эти инструменты позволяют создать туннель через NAT и обеспечивать доступ к устройству, которое находится за роутером без публичного IP.
2. **ZeroTier**: Это легкая в использовании виртуальная сеть, которая позволяет вашим устройствам соединяться друг с другом, даже если они находятся за NAT. Вам нужно будет установить клиент ZeroTier на каждое из ваших устройств, и затем вы сможете подключаться к ним, как если бы они находились в одной локальной сети.
3. **Tailscale**: Это еще одно решение для создания виртуальных сетей на основе WireGuard. Tailscale позволяет легко установить соединение между устройствами, обеспечивая надежный доступ к ним без необходимости настраивать сложные VPN.
4. **Apache Guacamole**: Это веб-приложение, которое позволяет управлять удаленными устройствами через браузер. Вы можете настраивать его на одном из устройств или на отдельном сервере, а затем подключаться к удаленным устройствам через RDP, VNC или SSH.
5. **MeshVPN или OpenVPN**: С этой технологией вы можете создать виртуальную частную сеть, которая соединяет ваши устройства. OpenVPN можно настроить на каждом устройстве, чтобы связывать их через SSH или другие средства.
Каждый из этих вариантов позволяет устанавливать соединение с удаленными устройствами, не требуя при этом наличия публичного IP. Выбор конкретного решения может зависеть от ваших потребностей, уровня удобства в настройке и особенностей оборудования.