Você precisa de um túnel SSH reverso e um túnel SSH regular e juntá-los no meio.
Temos 3 máquinas. Amigo, servidor, Mac.
Do Friend, você se conecta ao servidor usando o SSH, configurando um túnel na direção inversa.
ssh -R 9999:localhost:5900 user@Server
Isso cria uma sessão ssh de Friend, to Server. No Servidor, ele escuta na porta 9999 (no endereço do host local) e encaminha qualquer coisa nessa porta, de volta para o Friend on na porta 5900 (através do túnel ssh, de modo que o firewall não a bloqueie).
No Friend, você precisa garantir que haja um servidor VNC em escuta na porta 5900 (essa é a porta padrão dos servidores VNC).
Então, do Mac, você faz isso
ssh -L 9999:localhost:9999 user@Server
Isso encapsula tudo na porta 9999 no seu final, para a porta 9999 no host local no servidor. Desde 9999 no servidor é então encaminhado para o amigo, você juntou os túneis juntos.
Agora, você pode abrir um Cliente VNC no Mac e conectá-lo à porta 9999 (ou seja, quando ele perguntar ao que se conectar, você se conectará a 127.0.0.1:9999
).
O daemon ssh no servidor precisa suportar o encaminhamento de porta para que isso funcione.
Você pode fazer isso com apenas um túnel (o túnel reverso do Friend usando um formato ligeiramente diferente), mas isso deixa o computador Friend em risco, pois permitiria que qualquer pessoa acessasse o VNC to Friend conectando-se à porta no IP público do servidor. endereço. Desta forma, só você pode se conectar.