Obrigado a @Andrew por apontar para ssh-agent
. Tanto quanto eu posso ver, se alguém quiser ser capaz de estabelecer o túnel sem ter que digitar uma senha a cada vez, a senha deve ser armazenada ou removida. Eu escolhi removê-lo. Para o registro, aqui estão algumas limpezas com base nos comentários que recebi:
#!/usr/bin/env bash
# Establish tunnel
createTunnel() {
/usr/bin/ssh -i /home/laptopuser/.ssh/id_rsa_tunnel -R 2200:localhost:22 [email protected]
}
# Do nothing if tunnel is already established
/usr/bin/ssh -i /home/user/laptopuser/.ssh/id_rsa_tunnel -p 2200 [email protected] true
if [[ $? -ne 0 ]]; then
createTunnel
fi
crontab:
# m h dom mon dow command
*/1 * * * * /home/laptopuser/bin/establishTunnel.sh
copie o seu ID de túnel para o vps:
ssh-copy-id -i /home/user/laptopuser/.ssh/id_rsa_tunnel vps.com
espere até que o túnel esteja rodando (veja sudo watch grep CRON /var/log/syslog
) e copie seu id normal se você ainda não entrou em ~/.ssh/authorized_keys
ssh-copy-id vps.com -p 2200
O ideal é que o túnel seja executado como usuário dedicado tanto no vps quanto no laptop.