Túnel SSH com apenas senha de destino (em vez de duas senhas)?

Túnel SSH com apenas senha de destino (em vez de duas senhas)?

Eu tenho um servidor de destino rodando Ubuntu 14.04 (vamos chamá-lo destserver) e um servidor de túnel também rodando Ubuntu 14.04 (vamos chamá-lo bridgeserver), que possui um endereço IPV4 fixo. Eu o tenho configurado atualmente na inicialização, destserverusado autosshpara conectar-se a bridgeserver:

exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR

Estou usando autenticação de chave aqui, para que o comando acima possa ser concluído sem senhas. Agora, quando estou no meu laptop em uma rede pública em algum lugar, posso fazer isso:

ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost

... e isso funciona bem, exceto que me pede dois conjuntos de senhas:

$ ssh -t -o ProxyCommand='ssh mybridgeuser@BRIDGESERVER_IP_ADDR nc localhost 2222' mydestuser@localhost
mybridgeuser@BRIDGESERVER_IP_ADDR's password: 
mydestuser@localhost's password: 
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...

Agora, gostaria de disponibilizar este servidor de destino para outras pessoas, mas não quero compartilhar nenhum detalhe de autenticação do servidor bridge (que alugo pessoalmente) e, portanto, não quero compartilhar a senha do mybridgeuser. Então, eu gostaria de estabelecer uma conexão como a acima - exceto quando sou questionado apenas sobre a senha do usuário (digamos mydestuser) em destserver.

Existe uma sshsintaxe que eu possa usar no cliente, para que eu possa me conectar destserverusando apenas credenciais de usuário destserver(sem solicitação de senha de bridgeserver), sem alterações na configuração atual com autossh? Se forem necessárias alterações na configuração, quais seriam as alterações na configuração - e como seria o sshcomando no laptop?

Responder1

Hm, posso estar errado sobre isso, mas acabei de escrever isso em meu arquivo init:

exec autossh -M 0 -N -R :2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR

... em vez de:

exec autossh -M 0 -N -R 2222:localhost:22 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" -o "BatchMode=yes" -i /path/to/bridgeserver_mybridgeuser_id_rsa mybridgeuser@BRIDGESERVER_IP_ADDR

... observe, acabei de adicionar dois pontos antes do que costumava ser 2222:localhost:22; e agora no laptop posso emitir apenas:

ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222

... e parece funcionar agora, pois só está me pedindo uma senha:

$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
mydestuser@BRIDGESERVER_IP_ADDR's password: 
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
...

... enquanto anteriormente não me deixava fazer isso?!:

$ ssh mydestuser@BRIDGESERVER_IP_ADDR -p 2222
ssh: connect to host BRIDGESERVER_IP_ADDR port 2222: Connection refused

Não sei por que esses dois pontos foram necessários, então ainda gostaria de ler uma resposta adequada sobre isso...

informação relacionada