Diferenças entre ssh -L a -D

52

Eu estou tentando entender as diferenças entre ssh -L para -D. Existe mais alguma coisa, exceto que -D é apenas MEIAS?

Obrigado!


fonte

Respostas:

53

ssh -Labre uma porta local. Tudo o que você envia para essa porta é colocado na conexão ssh e sai pelo servidor. Se você ssh -L 4444:google.com:80abrir , por exemplo, se abrir http://localhost:4444no navegador, verá a página do google.

ssh -Dabre uma porta local, mas não possui um endpoint específico como com -L. Em vez disso, ele finge ser um proxy do SOCKS. Se você abrir, por exemplo, ssh -D 7777quando você instrui seu navegador a usar localhost:7777como proxy SOCKS, tudo o que seu navegador solicita passa pelo túnel ssh. Para a Internet pública, é como se você estivesse navegando no servidor ssh em vez de no computador.

Jessidhia
fonte
6
Um detalhe importante sobre -L é que você pode vincular uma porta local apenas para uso local, por exemplo, localhost: 80: remotehost: 8080, mas também pode vincular essa porta a qualquer outra pessoa. Assim, você pode fazer com que uma máquina em sua rede local ofereça acesso a uma máquina remota por um túnel, sem que nenhuma das máquinas locais saiba disso.
Div6
@dividebyzero Estou tendo problemas para imaginar o que você está descrevendo
Michael Dorst
@MichaelDorst Quero dizer esta frase da página de manual:The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.
dividebyzero
ssh -L 4444:google.com:80não funciona para mim, requer outro parâmetro para fazer login, como [email protected]
Saman Mohamadi
6

No SSH, -Despecifica um encaminhamento de porta local "dinâmico" em nível de aplicativo.

SSH -D [bind_address:]port

Especifica um encaminhamento de porta local "dinâmico" em nível de aplicativo. Isso funciona alocando um soquete para escutar a porta no lado local, opcionalmente ligada ao endereço de bind especificado. Sempre que uma conexão é feita a essa porta, a conexão é encaminhada pelo canal seguro e o protocolo do aplicativo é usado para determinar para onde se conectar a partir da máquina remota. Atualmente, os protocolos SOCKS4 e SOCKS5 são suportados, e o ssh atuará como um servidor SOCKS. Somente o root pode encaminhar portas privilegiadas. O encaminhamento de porta dinâmico também pode ser especificado no arquivo de configuração.

Os endereços IPv6 podem ser especificados com uma sintaxe alternativa: porta [bind_address /] ou colocando o endereço entre colchetes.

Somente o superusuário pode encaminhar portas privilegiadas. Por padrão, a porta local é vinculada de acordo com a configuração GatewayPorts. No entanto, um bind_address explícito pode ser usado para vincular a conexão a um endereço específico. O endereço bind_ do “localhost” indica que a porta de atendimento deve ser ligada apenas para uso local, enquanto um endereço vazio ou '*' indica que a porta deve estar disponível em todas as interfaces.

Além disso, ssh -Lespecifica que a porta especificada no host local (cliente) deve ser encaminhada para o host e a porta especificados no lado remoto.

SSH -L [bind_address:]port:host:hostport

Especifica que a porta especificada no host local (cliente) deve ser encaminhada para o host especificado e a porta no lado remoto. Isso funciona alocando um soquete para escutar a porta no lado local, opcionalmente ligada ao endereço de bind especificado. Sempre que uma conexão é feita a essa porta, ela é encaminhada pelo canal seguro e uma conexão é feita para hospedar o hostport da porta da máquina remota. Os encaminhamentos de porta também podem ser especificados no arquivo de configuração. Os endereços IPv6 podem ser especificados com uma sintaxe alternativa: [bind_address /] port / host / hostport ou colocando o endereço entre colchetes.

Somente o superusuário pode encaminhar portas privilegiadas. Por padrão, a porta local é vinculada de acordo com a configuração GatewayPorts. No entanto, um bind_address explícito pode ser usado para vincular a conexão a um endereço específico. O endereço bind_ do “localhost” indica que a porta de atendimento deve ser ligada apenas para uso local, enquanto um endereço vazio ou '*' indica que a porta deve estar disponível em todas as interfaces.

Mughil
fonte