Encaminhamento X11 com Xming sobre SSH?

11

Eu tenho acesso SSH e tenho o Xming instalado, junto com as fontes do Xming. Eu configurei o PuTTY para encaminhar x11 e disse para colocar a área de trabalho em localhost: 0, de acordo com as instruções aqui .

No entanto, depois que eu faço login e startxrecebo ... nada. Ou melhor, ele executa várias mensagens que parecem dizer que tudo está funcionando, mas eu recebo um cursor na janela do console que age como se estivesse no estado de espera. E é isso.

o que estou perdendo? Preciso abrir algo para ver a área de trabalho?

Quero encaminhar minha área de trabalho para o PC de trabalho, para poder brincar com o RasPi na hora do almoço sem conectar fisicamente o hardware. Por favor ajude.

EDITAR:

Captura de tela do que acontece com o Xming em execução, e eu SSH e chamo startx:

SSH com resposta Xming

EDIT 2:

Esta resposta diz que startxé desnecessário, porque inicia o servidor RasPi X e estou usando o servidor Xming no Windows. Nesse caso, como chego à área de trabalho / GUI no Xming no Windows? Porque, mesmo com o Xming em execução e o SSH ativado, não recebo nada além de um prompt de console normal. Talvez eu esteja fazendo errado. O que eu quero é minha GUI RasPi normal e completa, executando em uma janela no meu PC remoto com Windows. Eu não quero usar o VNC. Estou encaminhando pela Internet. Como eu chego lá?

zenbike
fonte
2
Eu também queria executar uma sessão gráfica do meu Raspberry para o meu computador com Windows. E quando eu vi sua mensagem dizendo que startx significa iniciar o servidor X, entendi que precisava iniciar um programa X ... Então, vamos começar o ... gerenciador de sessões x! Dessa forma, você tem a sessão gráfica em seu computador distante. obrigado, você me deu o caminho!

Respostas:

15

Se você iniciar o Xming no seu computador com Windows, já terá um servidor X em execução. Você não precisa iniciar o servidor X do seu Raspberry Pi usando startx. Seus aplicativos X serão executados no Raspberry Pi, mas o aplicativo será desenhado no servidor Xming X do Windows.

A documentação que você vinculou indica que é necessário iniciar o servidor X no Windows e não menciona que é necessário iniciar o servidor X no Linux. Na última frase da documentação:

Agora você deve conseguir executar aplicativos X do host na área de trabalho local

"Aplicativos X" refere-se não ao servidor X (que deve ser iniciado startx), mas a aplicativos como xclock, xeyes etc.

Um aplicativo X especial é o lxsession, que iniciará o gerenciador de sessões padrão do LXDE (pelo menos no meu Raspbian). Iniciar este aplicativo no console fornecerá a "GUI completa" que você está procurando:

lxsession

Pessoalmente, não acho útil iniciar lxsession, iniciar os aplicativos X no console é muito mais fácil para mim.

asalamon74
fonte
11
Está bem. Isso eu posso entender, eu acho. Você está dizendo que o startx é desnecessário, porque inicia o servidor RasPi x e eu estou usando o servidor Xming no Windows. Nesse caso, como chegar à área de trabalho / GUI no Xming no Windows. Porque, mesmo com o Xming em execução e o SSH ativado, não recebo nada além de um prompt de console normal. Você está dizendo que eu só executaria o aplicativo real no xming, não a GUI completa. Talvez eu esteja fazendo errado. O que eu quero é a minha GUI RasPi normal e completa sendo executada em uma janela no meu PC com Windows remoto. Eu não quero usar o VNC. Estou encaminhando pela internet.
Zenbike 5/08
Atualizado a resposta.
precisa saber é o seguinte
Funciona perfeitamente, se (como esperado) um pouco lento para responder. Obrigado pela ajuda.
Zenbike 6/08
11
... E isso é a razão pela qual o seu guia recomendável executar aplicativos individuais sobre ssh em um momento ...
Alexander - Reintegrar Monica
11
@ asalamon74 Obrigado! Uau! isso é apenas chute. Eu não tenho que lidar com o teclado e o mouse conectado ao usb com um fio incrivelmente curto. Eu costumava sentar na frente da TV com a configuração acima. AGORA? Eu apenas ssh e corro o gui como um chefe !!
Dheeraj Bhaskar
1

Usando o Cygwin / X

Se você não está vinculado ao Xming, pode usar o Cygwin / X para executar um servidor X no Windows.

Preparando o Raspberry Pi

Tente estabelecer uma conexão SSH regular do Windows para o Raspberry Pi usando o PowerShell:

Faça logon no Raspberry Pi no Windows com PowerShell e SSH

Dado que Raspbian Buster inclui X11Forwarding yesem /etc/ssh/sshd_config, seu Raspberry Pi também deve ser capaz de transmitir a saída visual de aplicações X11 para um servidor X no Windows.

O próximo passo mostra como instalar esse servidor X.

Instale o Cygwin / X no Windows

O Cygwin / X fornece um servidor X para Windows que exibe aplicativos GUI em execução no Raspberry Pi.

  1. Baixe e execute setup-x86_64.exea partir website do Cygwin .

  2. Para o "Diretório de Pacotes Locais" do Cygwin, você pode usar C:\Users\me\AppData\Roaming\Cygwin.

  3. Escolha um servidor perto de você para baixar pacotes.

  4. Defina "View" para "Full" e procure por xinit.

  5. Na coluna "Novo", use o menu suspenso para alterar o valor de "Ignorar" para xinita versão mais recente:

Instale o pacote xinit com o Cygwin

  1. Instale o pacote opensshda mesma maneira.

Conecte-se ao Raspberry Pi no Windows

  1. Inicie o servidor X utilizando o menu Iniciar do Windows: Cygwin-X → XWin Server. Isso não abrirá nenhuma janela, mas você verá dois novos ícones na bandeja do sistema:

Ícones do servidor XWin na bandeja do sistema

  1. Inicie o terminal Cygwin: Cygwin → Cygwin64 Terminal

  2. Defina a DISPLAYvariável de ambiente para onde o servidor X no Windows é executado:

    export DISPLAY=:0.0

  3. Conecte-se ao seu Raspberry Pi com o encaminhamento X11:

    ssh -Y pi@raspberrypi

Entre com o Terminal Cygwin

Dentro da sessão SSH, agora você pode iniciar um aplicativo X no Raspberry Pi como Thonny :

Thonny encaminhado para o Windows

Como alternativa, como o usuário1297 mencionado nos comentários da pergunta, você pode executar x-session-managerpara emular a experiência que obteria ao se conectar ao Raspberry Pi via HDMI em um monitor externo:

Área de trabalho Rasbpian forwared para Windows

Se você deseja iniciar um aplicativo diretamente sem primeiro digitar seu nome no shell, use o seguinte:

ssh -Y pi@raspberrypi x-session-manager

No macOS

O XQuartz fornece um servidor X para o macOS.

Instale o XQuartz, efetue logout e logon novamente (para tornar o novo valor DISPLAYefetivo) e inicie aplicativos com SSH do Bash:

ssh -Y pi@raspberrypi thonny

Thonny dentro do macOS usando XQuartz

Matthias Braun
fonte
1

Se você já está executando um servidor X no Windows (como você está com o Xming), o lado do Windows está praticamente concluído (mas veja abaixo alguns detalhes importantes). O ponto principal restante é dizer aos aplicativos X11 no pi para enviar os dados X11 para o seu PC com Windows.

Isso é feito através da DISPLAYvariável de ambiente. Normalmente, se o servidor e o aplicativo X estiverem sendo executados no mesmo computador, o DISPLAY apenas especificará o número do servidor (por exemplo, :0se você estiver executando apenas um servidor X) ou talvez um servidor e uma tela (por exemplo :0.0). Como não há endereço IP, isso informa à biblioteca X dos aplicativos que o servidor é local e as conexões serão feitas de acordo (provavelmente através de algum tipo de transporte de memória compartilhada).

Para instruir o aplicativo a enviar dados X11 para um nó remoto, inclua um endereço IP na DISPLAYvariável. Por exemplo export DISPLAY=192.168.1.10:0,. Isso informará aos aplicativos X11 que eles precisam abrir uma conexão TCP com o servidor X # 0 no nó 192.168.1.10. Os nomes de host DNS estão ótimos aqui, se você os tiver em sua rede.

Dois problemas em potencial

Como escrevi no primeiro parágrafo, simplesmente executar o Xming pode não ser suficiente. Pode haver configuração adicional necessária.

A primeira é que o servidor X11 deve ser configurado para aceitar conexões de nós remotos via TCP. Muitos servidores X distribuídos hoje (não conheço o Xming) só aceitam conexões de aplicativos em execução local, a menos que você os configure explicitamente. Esse é um recurso de segurança, pois cada soquete aberto é um vetor em potencial para ataque.

A segunda é que o servidor X11 mantém um banco de dados de hosts / usuários com permissão para se conectar. Você precisa colocar na lista branca o endereço IP do seu Raspberry Pi. Você pode fazer isso executando o xhostcomando do Xming no Windows, por exemplo, em um console executando um xterm. Você também pode digitar xhost +para desativar essa verificação de segurança, mas isso é perigoso, pois permitirá que qualquer aplicativo de qualquer lugar do mundo abra conexões com o seu monitor. Se você usa um firewall em uma LAN em que confia em todos (por exemplo, em sua própria casa), essa é a abordagem mais fácil, mas reserve um tempo para configurar corretamente, xhostcaso não esteja.

Alternativo: ssh -Y

Usando a abordagem acima, todos os seus aplicativos X11 tentarão abrir conexões TCP com o servidor X. Essas conexões não são seguras. Alguém nos pacotes de espionagem da LAN pode interceptá-los.

Para resolver esse problema, em vez de definir a variável DISPLAY no Raspberry pi, use o -Yparâmetro ao conectar-se a ela (por exemplo slogin -Y hostname). O parâmetro -Y (como -X) criará um túnel entre os nós para transportar tráfego X11. Isso manterá o tráfego X11 criptografado e seguro. Ele também atribuirá sua própria variável de ambiente DISPLAY para que os aplicativos usem o túnel. Também pode eliminar a necessidade de mexer, xhostpois (no que diz respeito ao servidor X) as conexões são originárias localmente (do lado de origem do túnel SSH).

David C.
fonte