Мне нужно установить произвольный удаленно-переадресованный порт на определенный локальный порт при подключении к серверу. У меня нет прав администратора на сервере, который является значительным вычислительным ресурсом, используемым большим количеством людей. Я не могу выбрать статический номер удаленного порта, потому что у меня нет причин ожидать, что он всегда будет доступен.
Я использую команду типа ssh -R 0:localhost:8001 имя сервера
-- используя 0 для номера порта, чтобы удаленный сервер мог выбрать порт для меня. Это работает хорошо; клиент сообщает мне выделенный номер порта, и затем я могу использовать его для обратного подключения к моей машине (или другой в моей сети) вручную.
Проблема в том, что мне нужно написать несколько сценариев для использования другими в удаленной системе, и мне нужно средство для определения на удаленном конце номера порта для этого сеанса. Я просмотрел переменные среды SSH_* в сеансе, и ни одна из них не помогла. Я попытался просмотреть вывод сс-ле | grep "идентификатор:$UID"
и это действительно находит порт среди других, но кажется немного запутанным и не совсем уверенным, что всегда будет работать, особенно если у пользователя запущены другие процессы, возможно, в разных сеансах входа.
Есть ли окончательный, менее запутанный способ найти динамически выделяемый номер удаленного переадресованного порта?
Редактировать: Я только что обнаружил, что это дубликат этот предыдущий пост, где вопрос был задан немного в других терминах, но суть одна и та же. К сожалению, я не могу использовать решения, использующие root или sudo на сервере.
Я понимаю, что то, что я хочу, возможно, невозможно сделать надежным способом, что делает этот автоматический выбор порта гораздо менее полезной функцией.