Por definição, o cliente é aquele que inicia a conexão.
Para o seu problema, acho que uma solução simples seria construir um túnel reverso.
No computador sem IP público:
ssh -R 2222:localhost:22 loginOfServerWithPublicIP@publicIP
Isso se conecta ao servidor por SSH e cria um encapsulamento do servidor com IP público na porta 2222 para o computador sem IP público na porta 22 (SSH).
E depois no servidor:
ssh -p 2222 loginOfComputerWithoutPublicIP@locahost
A conexão é redirecionada da porta 2222 do servidor para a porta 22 do computador pelo primeiro túnel. Você pode querer usar a ferramenta como autossh
para tornar o túnel mais resiliente (ou seja, reinicie-o automaticamente quando ele for desligado).