Você tem duas categorias de opções:
Usando o X11 para seus recursos cliente-servidor.
O X11 é projetado como um protocolo cliente-servidor, portanto, seu aplicativo se conecta efetivamente ao servidor X11 para exibir suas janelas. No modelo X11, o aplicativo é o cliente e o display é o servidor.
Como exemplo, se você está sentado ao lado de machineA e machineB é seu servidor Linux remoto, você pode usar SSH de machineA para machineB (então machineA é o cliente no que se refere a SSH). Em seguida, se você executar xeyes
(ou qualquer aplicativo X11), o machineB será o cliente para se conectar ao servidor X11 da máquinaA (no que diz respeito ao aplicativo X11).
Para que isso funcione, você precisa de um servidor X11 em execução na máquinaA. Isso não é um problema. Os sistemas Linux com um ambiente de desktop terão um fora da caixa. No Windows, você pode usar o fornecido com o Cygwin, ou talvez o Exceed.
Para proteger essa conexão, use -X
(ou -Y
se confiar no servidor) com ssh
de uma caixa Linux (máquinaA), isso encaminhará automaticamente as conexões X11 de volta para sua máquinaA, via tunnelled SSH. Da mesma forma (já que no seu caso de uso, o machineA está executando o Windows), os clientes SSH, como o Putty, têm a opção de encaminhar o X11.
Usando um ambiente de área de trabalho remota completa.
Você pode configurar um servidor VNC (ou similar, RDP, ...) na máquina remota e conectá-lo a partir de um cliente VNC. (A noção de cliente e servidor talvez seja mais intuitiva neste modelo.) Se o seu servidor VNC não estiver sendo executado por padrão, talvez seja necessário efetuar logon via SSH manualmente para iniciá-lo. Você tem mais chances de obter uma "área de trabalho completa" com esse método (em última análise, depende de como ela está configurada), portanto, você não precisará saber os comandos para iniciar as GUIs que deseja usar.
O UltraVNC parece ter a opção de tê-lo protegido para uso imediato em seu produto comercial. Se você quiser proteger tal conexão manualmente, provavelmente terá que se conectar a esta máquina via SSH e encapsular a porta VNC no servidor remoto para a sua máquina cliente.
Em geral, a segunda opção (área de trabalho completa) será mais rápida.