
Preciso estabelecer uma porta arbitrária de encaminhamento remoto para uma porta local específica ao conectar-me a um servidor. Não tenho direitos de administrador no servidor, que é um recurso computacional significativo usado por um grande número de pessoas. Não consigo escolher um número de porta remota estático porque não tenho motivos para esperar que ele esteja sempre disponível.
Estou usando um comando como ssh -R 0:localhost:8001 servername
-- usando 0 para o número da porta, para que o servidor remoto possa escolher uma porta para mim. Isso funciona bem; o cliente me informa o número da porta alocada e posso usá-lo para fazer uma conexão manual com minha máquina (ou outra na minha rede).
O problema é que preciso escrever alguns scripts para outros usarem no sistema remoto e preciso de um meio para determinar no terminal remoto qual é o número da porta para aquela sessão. Examinei as variáveis de ambiente SSH_* na sessão e nenhuma delas é útil. Eu tentei olhar a saída de ss -le | grep "uid:$UID"
e encontrei a porta entre outras, mas parece um pouco complicado e não tenho certeza se sempre funcionará, especialmente se o usuário tiver outros processos em execução, talvez em sessões de login diferentes.
Existe uma maneira definitiva e menos complicada de encontrar um número de porta encaminhada remota alocada dinamicamente?
Editar: Acabei de descobrir que esta é uma duplicata deesta postagem anterior, onde a pergunta foi feita em termos ligeiramente diferentes, mas é exatamente a mesma coisa. Infelizmente não consigo utilizar soluções que envolvam root ou sudo no servidor.
Estou percebendo que talvez não seja possível fazer o que eu quero de maneira confiável - tornando essa seleção automática de porta um recurso muito menos útil.