Questão Usando x11 encaminhamento com ssh e vnc?


Eu estou trabalhando em um cluster remoto via ssh com a opção -X, porque eu preciso visualizar dados e gráficos, através de um protocolo vpn. Às vezes, devido à instabilidade da conexão com a internet, perco a minha sessão. Eles me disseram que eu poderia usar o vnc para não perder minha sessão atual, de modo que, se a conexão com a internet cair, eu possa reconectar e continuar com a sessão anteriormente aberta.

O que eu faço é logar no cluster remoto 'remote.cluster' e digitar

 vncserver :1

então eu abro outro terminal no meu sistema e eu digito

 ssh -C -NL 5901:remote.cluster:5901 myusername@remote.cluster &

Então eu começo o vinagre no meu sistema e eu conecto usando o protocolo ssh. O problema é que eu não tenho o encaminhamento x11 e não consigo abrir janelas. Se eu tentar conectar usando o protocolo vnc com vinagre ele não conecta, porque eu recebo algo como tempo limite de conexão.

O que devo fazer?


4
2017-11-21 10:56


origem




Respostas:


Caso nos conectemos a um X-Server remoto via VNC, temos a vantagem de que o aplicativo gráfico continuará funcionando mesmo quando a conexão SSH com o controle remoto estiver inativa. Podemos, então, nos reconectar para retomar a aplicação gráfica. Veja também:

Para acelerar a reconexão, podemos combinar a conexão com o controle remoto com uma sessão SSH usando vncviewer a partir de tightvncviewer  Install tightvncviewer com a opção -via. Por isso, podemos rodar no servidor remoto:

vncserver:0  ## or any other display number e.g. :1

estabelecer uma conexão no visualizador através de um túnel SSH:

vncviewer -via user@remote localhost:0

Isso exigirá consideravelmente mais largura de banda porque toda a área de trabalho terá que ser transmitida do servidor VNC. Portanto, pode não ser uma boa ideia para conexões com pouca largura de banda, mas isso pode proporcionar uma experiência um pouco melhor em conexões de alta largura de banda, mas instáveis, em comparação com o encaminhamento de X.


3
2017-11-21 11:54



o que eu realmente quero fazer é, no link que você fornece, o que michael_n diz no segundo comentário para a primeira resposta, mas não funciona para mim porque eu não consigo me reconectar com a tela -r, talvez eu esteja fazendo Algo errado - simona
Eu fiz o que você diz e o vnc está pedindo uma senha, que eu não configurei, então devo perguntar ao administrador do remotehost, certo? Outra coisa: se eu usar vnc via ssh como acima em sua resposta, será lento porque todo o desenho gráfico será executado na máquina remota ao invés do meu local? - simona
Vncviewer -via pede 1) para a senha do ssh para o controle remoto e então 2) para a senha do vnc mas o último somente no caso de ter sido configurado no controle remoto. Todo o desenho será feito no servidor remoto e depois enviado como um gráfico comprimido através do túnel ssh (veja também tightvnc.com/vncviewer.1.php) - Takkat
Obrigado pela sua solução. Como não ficou claro para mim quando li sua solução, gostaria de chamar a atenção dos futuros leitores de que os únicos comandos necessários são vncserver: 1 e vncviewer -via user @ remote localhost: 1. Btw a visualização gráfica é muito rápida, estou surpreso que é realmente riun no cluster remoto e não na minha máquina local - simona
@ Simona: Obrigado por apontar isso. Espero que com a edição esteja mais clara agora. - Takkat


O comando usado:

ssh -C -NL 5901:localhost:5901 myusername@remote.cluster &

encaminhar local 5901 -> remote.cluster: 5901

Assim, você pode se conectar ao localhost :: 5901 para se conectar à sessão VNC em execução no remote.cluster (para o qual você não tem acesso direto).

O encaminhamento do X11 é diferente do VNC. Você precisa usar -X, por exemplo

ssh -X myusername@remote.cluster

Do que você será capaz de executar aplicações GUI remotas em sua máquina local, desde que você tenha um X Server rodando localmente (Ubuntu Desktop ou Xming no Windows).

Atualizar:

Eu cometi um erro no encaminhamento, deveria ser:

ssh -C -L 5901:localhost:5901 myusername@remote.cluster

Então você pode vnc para localhost: 5901, o tráfego será encaminhado para remote.cluster: 5901. Pedido de desculpas pelo descuido ...

Se nenhuma GUI for necessária, considere o uso tmux ou screen para evitar perda de sessão.


1
2017-11-21 11:21



Eu sempre uso ssh -X e funciona, o ponto é que eu gostaria de configurar a coisa de uma maneira que quando minha conexão cair eu possa reconectar e encontrar novamente a minha sessão anterior. Então, você está dizendo que eu deveria usar o protocolo vnc em vinagre para se conectar ao cluster remoto? isso não funciona: eu recebo `conexão ao host remote.host foi fechado ' - simona
Atualizei a resposta, não percebi um erro no comando de encaminhamento. - Terry Wang
Obrigado, eu realmente não preciso de GUI, apenas para visualizar alguns enredos, você pode me dar um ponto de partida para a tela ou tmux, eu não sei nada sobre eles - simona
Eu pessoalmente prefiro tmux, você pode usar tela ou byobu (tela aprimorada Ubuntu), semelhante. Rodar o tmux no servidor remoto é basicamente rodar um daemon / session naquela caixa, para que quando você for desconectado, você possa reconectar via SSH e anexar a essa sessão - o tmux attach sem perder o que você estava trabalhando no terminal. Um exemplo .tmux.conf gist.github.com/3950393 - Terry Wang