Como você tem a máquina C na Internet, crie uma conta especial chamada sesame
e em A você cria uma conta com uma chave pública / privada da qual você copiou a chave pública para a conta sesame
em C.
Agora você pode fazer login de A para C, mas em vez de fazer isso, faça o seguinte:
ssh -N -R 19930:localhost:22 sesame@yourserverC
(você pode querer combinar isso com uma instrução de suspensão ou, por exemplo, 10 segundos e envolvê-lo em um loop infinito para que a conexão seja restabelecida se o WiFi down causar a quebra)
Da máquina B, normalmente faça o login em qualquer conta que você tiver em C (pode ser, mas não precisa ser a conta sesame
, diferentes contas são o que eu uso). E quando você estiver em C, faça o login para A usando:
ssh localhost -p 19930
É claro que você pode usar um número diferente de 19930.
É possível executar o ssh -N -R ...
de /etc/rc.local
se a sua chave privada em A não estiver protegida por senha. Nesse caso, certifique-se de tornar sesame
uma conta separada com funcionalidade limitada, para que, quando sua máquina A for comprometida / roubada, o risco para seu servidor C seja limitado. É também por isso que recomendo usar uma conta separada para ir de B para C.
Você pode realmente definir o shell de login para sesame
em /etc/passwd
para /bin/false
, para que você não possa mais usar a conta para fazer login.