Невозможно использовать существующий сокет для другой цели. Это все равно, что ехать на поезде вниз по шоссе - оно просто не сработает (или нет, если сначала не выкопать шоссе и не проложить рельсы).
Так какие у тебя варианты?
Ну, есть несколько.
Одним из них будет запуск VPN-сервера на вашем сервере, к которому подключается ваша встроенная система. Это эффективно пробьет ваш маршрутизатор и создаст новую сеть, соединяющую вашу встроенную систему и ваш сервер вместе. Затем вы можете ssh через эту новую сеть. Я часто использую vtun 1 для этого, так как он легкий, имеет много разных вариантов конфигурации (включая виртуальный Ethernet, который действительно хорош 2 ).
Вы можете сделать так, чтобы ваша встроенная система получала команды с вашего сервера через существующий канал, и если она получит правильную команду, она откроет SSH-соединение с вашим сервером, включая переадресацию SSH-порта. Это откроет несвязанное TCP-соединение между встроенной системой и вашим сервером, и вы сможете делать то, что вам нравится. Например, он может подключить локальный сокет на сервере к демону SSH, работающему во встроенной системе, так что вы затем подключитесь к локальному хосту по ssh, но с другим номером порта, и он перенаправит это соединение во встроенную систему.
Мой любимый вариант - использовать VPN, поскольку он открывает целый новый мир возможностей, а не только один SSH-туннель.
1 vtun доступен в стандартных репозиториях Debian / Ubuntu / etc apt.
2 Мой рабочий стол и ноутбук подключены к двум моим серверам, которые также подключены друг к другу, используя vtun с виртуальным Ethernet-соединением ( tap ) и TCP-соединениями, плюс quagga для маршрутизации BGP. Мой ноутбук может разговаривать с моим рабочим столом, когда я отсутствую, и об использовании моего телефона для доступа в Интернет, как если бы они находились в одной комнате. О, и все это также зашифровано.