Diferenças entre VNC e ssh -X

27

Por que você usaria o VNC (ou, nesse caso, o NX) em vez de apenas o usar ssh -X (-Y). Eu li que o VNC usa menos largura de banda, mas existem outras diferenças / vantagens com a respectiva ferramenta?

O barqueiro silencioso
fonte

Respostas:

30

Além dos problemas de largura de banda e latência (que podem variar um pouco), as grandes diferenças são a funcionalidade que ele fornece.

O VNC exporta uma sessão inteira, desktop e tudo, enquanto o ssh executa um único programa e mostra suas janelas na estação de trabalho.

O servidor VNC exporta uma sessão que sobrevive mesmo quando você desconecta a tela e você pode reconectá-la mais tarde com todas as janelas abertas etc. Isso não é possível com um túnel X ssh, pois quando o servidor X morre, as janelas desaparecem. .

dkagedal
fonte
5
Essa é a maior razão pela qual eu sempre uso o VNC, nunca a janela do X direta. (Eu uso o VNC em um túnel ssh). Quando fecho a tampa do meu laptop, a conexão está interrompida. Com o ssh -X, não há como retomar - eu tenho que reiniciar o aplicativo desde o início. Com o VNC (direto e através de um túnel ssh), posso reconectar e continuar exatamente de onde parei.
David Cary
8
Embora seja um pouco OT (já que este Q provavelmente é apenas sobre aplicativos de GUI): se um aplicativo de GUI real não for necessário, e apenas o acesso básico ao shell for suficiente (por exemplo, xterm), faça "ssh" seguido de "screen bash". Se desconectado (laptop fechado, vpn desconectado etc.), o shell remoto permanece ativo. Faça login novamente e reconecte-se via "screen -r". Eu apenas trago isso à tona desde que vi pessoas executando o vnc apenas para acesso básico ao shell (ou executando um xterm remoto exibido localmente); na maioria das vezes (mas é claro que nem sempre), o acesso simples ao shell será suficiente.
22412 Michael
11
@michael_n Estou interessado no que você diz sobre o bash da tela, mas não consigo fazê-lo funcionar. Digitei 'ssh -X -t myusername @ remotehost screen bash' e, após a conexão cair, digite 'screen -r', mas ele diz 'não há tela a ser retomada'. O que devo fazer?
Simona
2
@simona após o login ssh bem sucedido, em seguida, executar tela: ssh user@host; e depois ligado: screen bash; para desconectar, ctrl+aseguido por ctrl+d. Você pode sair e fazer login novamente, depois: screen -lse screen -r. Saindo do bash sai da sessão da tela. Para mais (muito mais), ver vários tutoriais sobre tela GNU
michael
9

ssh -Xredireciona os comandos do X11 para o servidor X local. Portanto, é como se você estivesse executando o programa localmente, quando ele realmente está sendo executado no computador do outro lado. É muito lento porque usa muita largura de banda. (É disso que as pessoas estão falando quando dizem que o X11 é "transparente à rede".)

O VNC e outros aplicativos de área de trabalho remota permitem que o outro computador processe todos os desenhos gráficos e assim por diante e captura, em essência, uma captura de tela e a envia de volta ao seu computador. Pode parecer muito mais rápido, porque é necessária muito menos informação para exibir tudo. No entanto, ele também envia toda a área de trabalho, em vez de um único aplicativo.

Eu não recomendo o uso ssh -Xatravés da Internet, por uma razão simples: Ele vai usar toda a sua largura de banda disponível. É bastante útil em uma LAN, na minha opinião, portanto, se você só precisa de um aplicativo e não deseja executar uma área de trabalho inteira, esse é um bom caminho. Caso contrário, basta usar o VNC.

desvanecer-se
fonte
3
"É muito lento porque usa muita largura de banda. O protocolo X11 é muito complexo e geralmente envolve o envio de pixmaps grandes para frente e para trás através da conexão". - isso está errado, o protocolo X11 não é muito complexo e não envolve o envio de pixmaps grandes para frente e para trás através da conexão. Venha se juntar a esta proposta para saber mais sobre o Sistema X Window: area51.stackexchange.com/proposals/20129/the-x-window-system
11
@ Sherlock: Bem, o fato é que ele usa muita largura de banda. Eu apaguei a sentença ofensiva.
greyfade 13/09/10
11
O NX é uma maneira eficiente de transmitir dados do protocolo X11 pela rede. Ele comprime os dados, fornece extensas sessões de armazenamento em cache e túneis sobre SSH.
Adam Byrtek
4

O VNC compartilhará uma área de trabalho inteira de um sistema remoto. Requer uma área de trabalho completa no sistema remoto.

O ssh -X permite executar um único aplicativo X a partir de um servidor remoto. O sistema remoto não precisa estar executando uma área de trabalho completa e, geralmente, você só precisa de alguns pacotes para instalar no sistema remoto.

ssh -Xpode ser útil ao instalar pacotes de software complexos em uma conexão remota. Alguns produtos de software podem usar um instalador da GUI (Oracle Database, etc). Não quero instalar e uma área de trabalho do Gnome completa no meu servidor remoto. Portanto, você instala um ou dois pacotes X11 (Xauth?) No servidor remoto e permite que o DBA execute o instalador Oracle remotamente usando algo simples como 'ssh -X / media / cdrom / oracle-installer'.

Stefan Lasiewski
fonte