youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc
Mais tarde:
you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc
you@homepc$ ssh youatwork@localhost -p 23456
O que você pode fazer é: na etapa 1, encaminhar uma porta remota do PC do escritório para o servidor ( 12345
é usado como exemplo, qualquer porta > 1024 deve ser usada). Agora, conectar-se ao 12345 no servidor deve conectá-lo à porta 22 no officepc.
Na etapa 2, encaminhe a porta 23456 da sua máquina de casa para 12345 no servidor (de onde ela é encaminhada para o officepc: 22, como configurado na etapa 1)
No passo 3, você se conecta à porta local 23456 com seu login no PC do escritório . Isso é encaminhado pela etapa 2 para a porta 12345 em seu servidor e pela etapa 1 para o PC do escritório.
Note que estou usando o autossh para os encaminhamentos, já que é um wrapper ssh que reconecta automaticamente o túnel caso ele seja desconectado; no entanto, o ssh normal também funcionaria, desde que a conexão não caia.
Existe uma possível vulnerabilidade: qualquer um que pode se conectar ao localhost: 12345 no serverpc agora pode se conectar ao officepc: 22 e tentar invadir o servidor. (Note que se você estiver executando um servidor SSH, você deve protegê-lo acima das proteções básicas que estão ativadas por padrão; eu recomendo pelo menos desabilitar o login root e desabilitar a autenticação de senhas - veja por exemplo is )
Editar : verifiquei isso com a mesma configuração e funciona. GatewayPorts no
afeta apenas as portas que estão abertas para o mundo em geral, não para os túneis locais. Isso é o que as portas encaminhadas são:
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
Portanto, no que diz respeito à pilha de rede, é todo o tráfego local nas respectivas interfaces de loopback (além de conexões ssh para serverpc); portanto, GatewayPorts
não está verificado.
Existe, no entanto, a diretiva AllowTcpForwarding
: se for no
, essa configuração falhará, pois nenhum encaminhamento é permitido, nem mesmo na interface de loopback.