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 startx
recebo ... 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
:
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á?
Respostas:
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:
"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:
Pessoalmente, não acho útil iniciar
lxsession
, iniciar os aplicativos X no console é muito mais fácil para mim.fonte
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:
Dado que Raspbian Buster inclui
X11Forwarding yes
em/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.
Baixe e execute
setup-x86_64.exe
a partir website do Cygwin .Para o "Diretório de Pacotes Locais" do Cygwin, você pode usar
C:\Users\me\AppData\Roaming\Cygwin
.Escolha um servidor perto de você para baixar pacotes.
Defina "View" para "Full" e procure por
xinit
.Na coluna "Novo", use o menu suspenso para alterar o valor de "Ignorar" para
xinit
a versão mais recente:openssh
da mesma maneira.Conecte-se ao Raspberry Pi no Windows
Cygwin-X → XWin Server
. Isso não abrirá nenhuma janela, mas você verá dois novos ícones na bandeja do sistema:Inicie o terminal Cygwin:
Cygwin → Cygwin64 Terminal
Defina a
DISPLAY
variável de ambiente para onde o servidor X no Windows é executado:export DISPLAY=:0.0
Conecte-se ao seu Raspberry Pi com o encaminhamento X11:
ssh -Y pi@raspberrypi
Dentro da sessão SSH, agora você pode iniciar um aplicativo X no Raspberry Pi como Thonny :
Como alternativa, como o usuário1297 mencionado nos comentários da pergunta, você pode executar
x-session-manager
para emular a experiência que obteria ao se conectar ao Raspberry Pi via HDMI em um monitor externo:Se você deseja iniciar um aplicativo diretamente sem primeiro digitar seu nome no shell, use o seguinte:
No macOS
O XQuartz fornece um servidor X para o macOS.
Instale o XQuartz, efetue logout e logon novamente (para tornar o novo valor
DISPLAY
efetivo) e inicie aplicativos com SSH do Bash:fonte
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
DISPLAY
variá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,:0
se 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
DISPLAY
variável. Por exemploexport 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
xhost
comando do Xming no Windows, por exemplo, em um console executando um xterm. Você também pode digitarxhost +
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,xhost
caso 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
-Y
parâmetro ao conectar-se a ela (por exemploslogin -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,xhost
pois (no que diz respeito ao servidor X) as conexões são originárias localmente (do lado de origem do túnel SSH).fonte