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