Um pouco de palpite sobre o que você já tem:
comece com o túnel reverso:
serverA:~ $ ssh -R 22:localhost:10022 serverB
depois do Laptop conecte-se ao serverB também e conecte um encaminhamento local à porta que você definiu no reverso:
laptop:~ $ ssh -L 10023:localhost:10022 serverB
se eu entendi corretamente, algo assim é a parte que você já fez. E agora para a última parte:
conecte-se ao localhost na porta usada no encaminhamento local, isso envia todos os pacotes diretamente para o servidorA, especifique outra porta para que o aplicativo possa se conectar ao servidorA
laptop:~ $ ssh -p 10023 -L 10443:localhost:443 localhost
se o seu aplicativo precisa se conectar ao 443 e não pode usar outra porta como por exemplo 10443 que eu usei no exemplo, você terá que fazer a última conexão como root:
laptop:~ $ su -
laptop:~ # ssh -p 10023 -L 443:localhost:443 user@localhost
ou
laptop:~ $ sudo ssh -p 10023 -L 443:localhost:443 user@localhost
Algumas explicações:
- "443: localhost: 443" é resolvido no final remoto .... então é realmente serverA
- "user @" é o usuário necessário para efetuar login no serverA, se não for necessário antes de ser necessário agora, já que você localmente é root agora
- "localhost" é resolvido localmente, por isso, na verdade, é o Laptop.