Eu tenho um computador em casa e no trabalho, o computador em casa tem um endereço IP estático.
Se eu ssh do meu computador do trabalho para o meu computador doméstico, a conexão ssh funciona, mas os aplicativos X11 não são exibidos.
No meu /etc/ssh/sshd_config
em casa:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
No trabalho, tentei os seguintes comandos:
xhost + home HOME_IP
ssh -X home
ssh -X HOME_IP
ssh -Y home
ssh -Y HOME_IP
Meu /etc/ssh/ssh_config
no trabalho:
Host *
ForwardX11 yes
ForwardX11Trusted yes
Meu ~/.ssh/config
no trabalho:
Host home
HostName HOME_IP
User azat
PreferredAuthentications password
ForwardX11 yes
Meu ~/.Xauthority
no trabalho:
-rw------- 1 azat azat 269 Jun 7 11:25 .Xauthority
Meu ~/.Xauthority
em casa:
-rw------- 1 azat azat 246 Jun 7 19:03 .Xauthority
Mas isso não funciona
Depois de fazer uma conexão ssh para casa:
$ echo $DISPLAY
localhost:10.0
$ kate
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
kate: cannot connect to X server localhost:10.0
Uso iptables
em casa, mas permiti a porta 22. De acordo com o que li, é tudo o que preciso.
UPD.
Com-vvv
... debug2: início do retorno de chamada debug2: x11_get_proto: / usr / bin / xauth list: 0 2> / dev / null debug1: Solicitando o encaminhamento do X11 com falsificação de autenticação. debug2: canal 1: solicitação x11-req confirm 1 debug2: client_session2_setup: id 1 debug2: configuração do fd 3 TCP_NODELAY debug2: channel 1: request pty-req confirm 1 ...
Ao tentar iniciar kate
:
debug1: client_input_channel_open: ctype x11 rchan 2 vitória 65536 máximo 16384 debug1: client_request_x11: request from 127.0.0.1 55486 debug2: configuração do fd 8 O_NONBLOCK debug3: o fd 8 é O_NONBLOCK debug1: canal 2: novo [x11] debug1: confirme x11 A conexão debug2: X11 usa um protocolo de autenticação diferente. Conexão X11 rejeitada devido a autenticação incorreta. debug2: X11 rejeitou 2 i0 / o0 debug2: canal 2: falha na leitura debug2: canal 2: close_read debug2: canal 2: entrada aberta -> drenagem debug2: canal 2: ibuf vazio debug2: canal 2: enviar eof debug2: canal 2: dreno de entrada -> fechado debug2: canal 2: falha na gravação debug2: canal 2: close_write debug2: canal 2: saída aberta -> fechada debug2: X11 fechado 2 i3 / o3 debug2: canal 2: envia perto debug2: canal 2: rcvd fechar debug2: canal 2: está morto debug2: canal 2: coleta de lixo debug1: canal 2: grátis: x11, nchannels 3 debug3: channel 2: status: As seguintes conexões estão abertas: # 1 sessão de cliente (t4 r0 i0 / 0 o0 / 0 fd 5/6 cc -1) # 2 x11 (t7 r2 i3 / 0 o3 / 0 fd 8/8 cc -1) # O mesmo que acima repita cerca de 7 vezes kate: não é possível conectar ao servidor X localhost: 10.0
UPD2
Forneça sua distribuição Linux e número da versão.
Você está usando um ambiente GNOME ou KDE padrão para o X ou algo mais que você personalizou?
azat: ~ $ kded4 -version Qt: 4.7.4 Plataforma de Desenvolvimento KDE: 4.6.5 (4.6.5) Daemon do KDE: $ Id $
Você está chamando o ssh diretamente em uma linha de comando a partir de uma janela do terminal?
Qual terminal você está usando? xterm, gnome-terminal ou?
Como você iniciou o terminal em execução no ambiente X? De um menu? Tecla de atalho? ou?
Do emulador de terminal `yakuake` Pressione manualmente `Ctrl + N` e escreva comandos
Você pode executar xeyes na mesma janela do terminal em que o ssh -X falha?
`xeyes` - não está instalado Mas o `kate` ou outro aplicativo kde está sendo executado
Você está chamando o comando ssh como o mesmo usuário em que você fez logon na sessão X?
From the same user
UPD3
Também faço o download de ssh
fontes e, usando o debug2()
write, porque é que a versão é diferente?
Veja alguns cookies e um deles está vazio, outro éMIT-MAGIC-COOKIE-1
fonte
Sempre que você estiver tendo problemas com o ssh, a primeira coisa que você deve fazer é executar o cliente com a
-v
opção de fornecer essa saída para que outras pessoas inspecionem:Eu acho que o problema está no seu sistema local. Como você está chamando o comando ssh? Você está executando manualmente em um shell? Ou está sendo executado como parte de um script? Em ambos os casos, convém garantir que o sistema local tenha o
DISPLAY
ambiente definido corretamente. Também precisa ser definido corretamente no lado remoto, mas esse valor será diferente no lado remoto e no lado local.Pelo que você escreveu, parece que ele está sendo configurado corretamente no host remoto (e, por extensão, o encaminhamento do X11 está sendo configurado corretamente pelo ssh). No sistema remoto você tem:
O que isso está mostrando no lado local? Isso deve ser fácil de verificar se você está em um shell, repetindo o valor e iniciando um aplicativo X a partir desse shell ... você sempre pode usar o venerável
xeyes
para esse tipo de teste, é claro! :)Por outro lado, se você estiver chamando o comando ssh de um script ou anexado a uma tecla de atalho, ele poderá não herdar o ambiente que você espera, portanto,
DISPLAY
a variável de ambiente no lado local poderá não estar definida.Além disso, como parece que você está mexendo com seu
.Xauthority
arquivo, você pode excluí-lo totalmente, depois saia da sua sessão X e faça login novamente, para que o recrie automaticamente. Raramente é necessário mexer com o seu.Xauthority
, portanto, tentar isso provavelmente é apenas uma medida desesperada que não ajudará.O que você deve ver no lado local é:
Em um sistema configurado corretamente, se você abrir um shell, não precisará configurá-lo manualmente, ele deverá ser herdado do ambiente que iniciou seu shell. No entanto, vi configurações do gerenciador de janelas / teclas de atalho que não tratam corretamente a herança de variáveis de ambiente. Se você possui um sistema linux em execução
gnome-session
oukde-session
que usa para iniciar seus shells ou scripts, suas variáveis de ambiente da sessão X devem ser definidas corretamente, conforme descrito na documentação do Ubuntu sobre a herança de variáveis de ambiente :ATUALIZADA
Obrigado por postar a saída de
ssh -vvv
. Nesse caso, a verbosidade extra de-vvv
versus just-v
é útil. A saída de depuração informa que o encaminhamento do X11 está sendo configurado corretamente:Mas a
:0
primeira linha me leva a acreditar que ainda existe um erro de configuração no lado local na maneira como você está chamando o ssh. Em muitos sistemas, o valor padrão paraDISPLAY
é:0.0
, não:0
. Você está de alguma forma configurando o valorDISPLAY
manualmente manualmente antes de chamar o comando ssh?Mais informações sobre o sistema local e como você está chamando o comando ssh seriam úteis neste momento.
xeyes
partir da mesma janela do terminal em que assh -X
falha?Este último item é importante. Se você estiver executando o ssh como outro usuário (por exemplo, se você abriu uma janela do terminal raiz em vez de uma janela do terminal do usuário), encontrará esse problema mesmo se estiver configurando explicitamente,
DISPLAY=:0
pois não possui permissões para conecte-se ao servidor X por padrão como outro usuário (mesmo como root!)fonte
t set
exibo manualmente. Na verdade eu acho que eu entendo por que ele não funciona, por causaX -nolisten
na máquina local-nolisten
não tem nada a ver com esse problema. No que diz respeito ao X, ele não sabe nada sobre sua conexão ssh remota. Para X, parece com qualquer outro programa local.sshd
também pode ser iniciado em primeiro plano com mais detalhes, caso o problema ocorra no lado do servidor.Suas configurações parecem estar bem, mas tente "ssh -X home" como sugerido por Agemen.
Além disso, se tudo mais falhar, tente o seguinte:
Depois de enviar o shsh para a sua máquina doméstica, no tipo "casa":
Em "trabalho", digite
O que fornecerá um prompt "xauth>". A partir daqui, digite "add" e copie e cole a saída da "lista xauth", uma linha por vez (cada linha precedida por "add"). Por exemplo:
Nos informe.
fonte
ssh -X home
(escreva no post). Sobre o xauth, tentarei amanhã.xauth list & xauth add
, mas ainda não funcionaxauth add
azat/unix:10 MIT-MAGIC-COOKIE-1 ad01c582768c832ff591277b27863bc7
(porque $ DISPLAY = localhost: 10.0), se isso pode ajudarNão entendo claramente se você deseja exibir seus aplicativos remotos na tela local (
work
) ou se deseja exibi-los no sistema remoto (home
).No primeiro caso, acho que
ssh -X host
deveria ser suficiente, sem a necessidade de usar o xhost.No segundo caso, o sistema em que você precisa usar o xhost é
home
, e não é suficiente, você também precisa exportar a variável de exibição.Não tenho muita certeza do que você quer fazer ... e como não sei quais diferenças existem entre o seu sistema e o meu, por um lado, e a configuração exata necessária para o seu caso, por outro lado (como Eu não sou um especialista ^ _ ^). Espero que ajude você de algumas maneiras, pois essas configurações também funcionaram para mim.
fonte
ssh -X home
(escreva no post). Sim, quero exibir aplicativos remotos no meu monitor local.