ssh o encaminhamento de porta dinâmico com remoto (-g) não está funcionando

1

Eu gostaria de permitir que alguns dispositivos clientes em minha rede doméstica se conectem à Internet, mas a conexão deve ser feita através do meu iMac, que possui um túnel SSH para um servidor remoto. Eu quero finalmente usar a conexão de internet do servidor remoto para fazer solicitações em nome dos dispositivos do cliente.

Do iMac eu inicio o túnel usando

ssh -D 8127 -f -g -N -C -vvv myuser@remote_server

Eu configuro o navegador no iMac com um proxy localhost: 8127 e tudo funciona bem. O servidor da web ao qual me conecto vê uma conexão de entrada do remote_server. Até aí tudo bem.

Mas quando eu configuro as mesmas configurações de proxy em meus clientes, não recebo nada. O navegador no meu laptop do Windows volta com 'A conexão foi redefinida'. Eu tentei com um dispositivo Android e um iPad. Nenhum deles funciona.

Os logs detalhados do túnel não revelam muito.

debug1: Connection to port 8127 forwarding to socks port 0 requested.
debug2: fd 12 setting TCP_NODELAY
debug3: fd 12 is O_NONBLOCK
debug3: fd 12 is O_NONBLOCK
debug1: channel 5: new [dynamic-tcpip]
debug2: channel 5: pre_dynamic: have 0
debug2: channel 5: pre_dynamic: have 411
debug2: channel 5: zombie
debug2: channel 5: garbage collecting
debug1: channel 5: free: dynamic-tcpip, nchannels 7
debug3: channel 5: status: The following connections are open:
  #2 direct-tcpip: listening port 8127 for 188.65.124.58 port 443, connect from 127.0.0.1 port 61067 to 127.0.0.1 port 8127 (t4 r0 i0/0 o0/0 fd 9/9 cc -1)
  #3 direct-tcpip: listening port 8127 for 172.217.22.206 port 443, connect from 127.0.0.1 port 61091 to 127.0.0.1 port 8127 (t4 r1 i0/0 o0/0 fd 10/10 cc -1)
  #4 direct-tcpip: listening port 8127 for 66.102.1.189 port 443, connect from 127.0.0.1 port 60990 to 127.0.0.1 port 8127 (t4 r2 i0/0 o0/0 fd 11/11 cc -1)
  #6 direct-tcpip: listening port 8127 for 172.217.22.206 port 443, connect from 127.0.0.1 port 61092 to 127.0.0.1 port 8127 (t4 r4 i0/0 o0/0 fd 13/13 cc -1)

Alguém tem alguma idéia de por que isso não está funcionando?

    
por sbarlow 18.05.2018 / 14:51

1 resposta

0

Você está ligado apenas a uma porta localhost. Não está particularmente claro na documentação (veja man ssh ) deste segmento:

By default, the local port is bound in accordance with the GatewayPorts setting. However, an explicit bind_address may be used to bind the connection to a specific address. 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.

E de ssh_config :

GatewayPorts Specifies whether remote hosts are allowed to connect to local forwarded ports. By default, ssh(1) binds local port forwardings to the loopback address. This prevents other remote hosts from connecting to forwarded ports. GatewayPorts can be used to specify that ssh should bind local port forwardings to the wildcard address, thus allowing remote hosts to connect to forwarded ports. The argument must be “yes” or “no”. The default is “no”.

O que isso significa é que, quando você usa ssh -D 8127 , está usando um limite de porta de acordo com GatewayPorts , cujo padrão é localhost , ou seja, hosts remotos não podem se conectar.

Se você especificar ssh -D :8127 , incluirá referência a um endereço e, como esse endereço está vazio, o padrão é * , isto é, hosts remotos podem se conectar.

Altere seu comando para isso e ele funcionará como você deseja:

ssh -D :8127 -f -g -N -C -vvv myuser@remote_server
    
por 18.05.2018 / 15:04

Tags