У меня есть две машины, клиент и сервер.
Клиент (который находится за корпоративным брандмауэром) открывает обратный туннель SSH к серверу, который имеет общедоступный IP-адрес, с помощью этой команды:
ssh -nNT -R0: localhost: 2222 insecure@server.example.com
В OpenSSH 5.3+, 0
возникновение сразу после -R
средства означает «выбрать доступный порт», а не явно вызывать его. Я делаю это потому, что не хочу выбирать порт, который уже используется. По правде говоря, на самом деле существует много Клиентов, которым необходимо установить похожие туннели.
Проблема в том, что сервер не знает, какой клиент какой. Если мы хотим подключиться к одному из этих клиентов (через локальный хост), то как мы узнаем, какой порт относится к какому клиенту?
Мне известно, что ssh сообщает номер порта в командную строку при использовании вышеуказанным способом. Тем не менее, я также хотел бы использовать autossh, чтобы сохранить сессии. Предположительно, autossh запускает свой дочерний процесс через fork / exec, так что вывод действительной команды ssh теряется в эфире.
Кроме того, я не могу придумать другой способ получить удаленный порт от Клиента. Таким образом, мне интересно, если есть способ определить этот порт на сервере.
У меня есть идея как-то использовать / etc / sshrc, который предположительно является скриптом, который запускается для каждого соединения. Тем не менее, я не знаю, как можно получить соответствующую информацию здесь (возможно, PID конкретного процесса sshd, обрабатывающего это соединение?) Я хотел бы некоторые указатели.
Благодарность!