Por que ssh -R permite a porta '0' mas ssh -L precisa de um número de porta?

2

Por que com ssh -R é possível alocar uma porta livre especificando '0' enquanto com ssh -L você precisa especificar uma porta livre válida?

Eu quero que o ssh use uma porta livre local para o tráfego remoto do FWD sem dependendo das portas livres

De páginas de manual

-R [bind_address:]port:host:hostport

If the port argument is ‘0’, the listen port will be dynamically allocated on the server and reported to the client at run time.

Mas -L não oferece essa possibilidade: (

-L [bind_address:]port:host:hostport

Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.....

    
por Leo Gallucci 26.05.2015 / 20:42

1 resposta

2

O SSH se ligará à porta especificada por L e a escutará para clientes arbitrários que iniciam conexões (e para pacotes nas conexões já estabelecidas, encaminhando-os para os servidores remotos, mas isso não é relevante no contexto desta questão).

Para iniciar uma conexão, o cliente deve especificar o número da porta na qual o servidor está atendendo a essas solicitações. Se essa porta for arbitrariamente selecionada, o cliente não a saberá e, portanto, não poderá iniciar a conexão.

Para -R , isso não é um problema, pois o servidor remoto não aceitará nenhuma conexão nessa porta diferente daquela do servidor local (que conhece o número da porta do argumento -R ).

Depois que a conexão inicial é estabelecida, portas adicionais atribuídas dinamicamente podem ser negociadas (assim conhecidas) pelo cliente e pelo servidor para o tráfego real.

    
por 29.05.2015 / 20:31