Como configurar o compartilhamento de área de trabalho remota através do SSH?

44

Existe uma maneira de visualizar (e controlar) uma área de trabalho remota através do SSH? Não terei acesso físico à máquina host remota.

irritadiço
fonte
vino não SSH específico: askubuntu.com/questions/4474/…
Ciro Santilli escreveu

Respostas:

51

Método 1 :

Isso pode ser alcançado com o servidor vino vnc & remmina (ambos são padrão no ubuntu; caso contrário, não o instale executando sudo apt-get install remmina). Em seguida, execute os seguintes comandos do computador local no prompt do terminal:

  1. ssh -Y gman@remote. Use encaminhamento X11 confiável, caso contrário, não funcionará

  2. vino-preferences. Ele abrirá as preferências do vino.

    preferência vino

  3. Clique também configure network automatically to accept connection. Mas não digite nenhuma senha, sua base64 codificada . Depois clique em fechar. Então corra:

    sudo -s
    
    export DISPLAY=:0.0
    
    xhost +
    
    /usr/lib/vino/vino-server & 
    

    Ele iniciará o servidor vino.

  4. Logout do servidor:

    xhost -
    
    Press CTRL+C twice
    
    exit
    
    exit
    
  5. Em seguida, abra o remmina . Escolha vncsob protocolo.

    Na basicguia, coloque o endereço do servidor em servercampo.

    Na guia ssh, clique em enable ssh tunnel. Abaixo ssh authentication, poderia ser passwordou public key:

    remmina-preferência

    Clique em salvar. E, em seguida, clique duas vezes no nome da conexão (área de trabalho inicial, como mostrado na figura) para começar a navegar na área de trabalho remota.


Método 2:

x11vncé um servidor VNC simples e você não precisará mexer nas configurações do Gnome ou nos 500 firewalls; basta instalar x11vncem todos os seus computadores (com fantoches ou o que você estiver usando para controle de massa).

Em seguida, no computador local, execute:

ssh user@host -L 5900:localhost:5900 "x11vnc -display :0 -noxdamage"

Obviamente, troque user@hostpelo nome de usuário e nome do host / IP do computador remoto.

E, em seguida, use um cliente VNC de sua escolha para se conectar localhost:5900. O comando SSH inicia um servidor vnc no computador remoto e, em seguida, faz o túnel dessa porta através do SSH. Você não precisa abrir nenhuma porta (desde que já possa SSH).

Se seus computadores tiverem configurações engraçadas de exibição, é melhor deixar o -display :0segmento no comando SSH. x11vnctentará automaticamente encontrar a exibição correta.


Fonte: askubuntu

Khurshid Alam
fonte
Se você estiver usando o vncviewer com uma conexão ssh lenta, seu comando deve parecer vncviewer localhost::5900 -viewonly -encodings "tight" -quality 0(no Debian / Ubuntu o visualizador é do tightvnc) ou vncviewer localhost::5900 -viewonly -PreferredEncoding tight QualityLevel=0(no Red Hat / Fedora o visualizador é do tigervnc), onde o nível de qualidade no Debian e no Redhat é entre 0 e 9, onde 9 é melhor, mas precisa de conexão rápida.
Erik
@erik Obrigado por explicar como usá-lo vncviewerpara conexão lenta. Eu, pessoalmente, provavelmente vou definir QualityLevel=4 or 5porque 0 qualitylevel(o que é 256 colors, eu acho) é muito chato para mim.
Khurshid Alam
1
Seu "Método 2" é perfeito para um acesso rápido à tela física remotamente, sem configurações permanentes especiais. Eu precisava adicionar o parâmetro -auth, conforme explicado na mensagem de erro, quando executei o comando, mas, caso contrário, funciona perfeitamente. Obrigado!
1858 Pierre Pierre
método @gerky 3 seria NoMachine, é atualmente o mais rápido e livre (apesar de não opensource), e trabalhar em android também
Aquarius Poder
1
Para o método 2, eu tive que usar -auth guesse executá-lo como root. Muito útil, obrigado!
22616 Bob
9

Visão geral da solução

Supondo que você já tenha configurado um OpenSSH Serverem sua máquina host, primeiro você deve ativar o controle da área de trabalho em sua máquina host. Se você pode habilitar o controle da área de trabalho em sua máquina host localmente, vá para 1a. Se você deve primeiro ativar o controle da área de trabalho em sua máquina host remotamente, vá para 1b.

Em seguida, crie um perfil de Cliente de Área de Trabalho Remota em sua máquina cliente para conectar-se à máquina host através de um túnel SSH e, finalmente, exibir e controlar a área de trabalho da máquina host através de um túnel SSH.

1a. Habilitar localmente o controle remoto da máquina host

Faça o seguinte na máquina host:

vino-preferences
  • vino-preferences também em Dash sob Desktop Sharing

insira a descrição da imagem aqui

  1. Carraça Allow other users to view your desktop
  2. Carraça Allow other users to control your desktop
  3. Carraça Require the user to enter this password
  4. Digite uma senha difícil de adivinhar
  5. Fechar

1b. Habilitar remotamente o controle remoto da máquina host

Faça o seguinte na máquina cliente, substituindo 123.123.12.3pelo endereço IP da máquina host:

ssh -Y 123.123.12.3
  • -Y, habilita o encaminhamento confiável do X11. Os encaminhamentos confiáveis ​​do X11 não estão sujeitos aos controles de extensão do X11 SECURITY.

vino-preferences
  • vino-preferences também em Dash sob Desktop Sharing

insira a descrição da imagem aqui

  1. Carraça Allow other users to view your desktop
  2. Carraça Allow other users to control your desktop
  3. Carraça Require the user to enter this password
  4. Digite uma senha difícil de adivinhar
  5. Fechar

Criar perfil de cliente de área de trabalho remota em sua máquina cliente

Faça o seguinte na máquina cliente:

remmina
  • remmina também em Dash sob Remmina Remote Desktop Client

Ctrl+ Nou Conexão> Novo

insira a descrição da imagem aqui

  1. Preencha seu endereço IP [123.123.12.3] onde diz Server
  2. Mudar para o SSHseparador

insira a descrição da imagem aqui

  1. Carraça Enable SSH Tunnel
  2. Aponte o seu Desktop Client para sua porta SSH não padrão
  3. Defina seu SSH Authentication <username>modo e
  4. Conectar

Exibir e controlar a máquina host

Na máquina cliente, quando solicitado <username>, digite a senha para criar o túnel SSH. Quando for solicitada a senha do VNC, digite a senha que você inseriu anteriormente na máquina host.

Se for bem-sucedido nesta etapa, agora você deve visualizar e controlar a área de trabalho da máquina host a partir da máquina cliente através de um túnel SSH.

jtd
fonte
Isso parece bastante abrangente, mas onde está a porta personalizada 12345 definida no host?
John T
Suponho que você precise de um comando ssh executado a partir do cliente em algum lugar, algo como: ssh -L 12345: localhost: 5900 user @ server_ip antes de usar o cliente remoto, conforme descrito.
John T
3

Consegui definir uma nova instalação do Ubuntu 16.04 a partir de uma conexão ssh remota com o seguinte script:

#! / bin / bash
exportar DISPLAY =: 0
leia -e -p "Senha do VNC: senha" -i "ubuntu"
dconf write / org / gnome / desktop / acesso remoto / ativado true
dconf write / org / gnome / desktop / acesso remoto / ativado por prompt false
dconf write / org / gnome / desktop / acesso remoto / métodos de autenticação "['vnc']"
dconf write / org / gnome / desktop / acesso remoto / criptografia requerida false
dconf write / org / gnome / desktop / acesso remoto / vnc-password \ "\ '$ (eco -n $ senha | base64) \' \"
dconf dump / org / gnome / desktop / acesso remoto /
serviço sudo lightdm restart

A citação é importante para qualquer uma das configurações de string (marcações simples entre aspas). Para que o dconf possa escrevê-lo, é necessário acessar o XWindows, e é por isso que a parte DISPLAY de exportação é necessária. Eu acho que você ainda precisa estar logado na área de trabalho na máquina Ubuntu real para se conectar ao VNC depois disso. O comando dump está lá apenas para confirmar que todas as configurações foram mantidas, você realmente não precisa disso.

Opcionalmente, convém fazer isso se quiser manter a exibição sempre ativa:

dconf write / org / gnome / desktop / screensaver / ativado por bloqueio false
dconf write / org / gnome / desktop / protetor de tela / ubuntu-lock-on-suspend false
dconf write / org / gnome / desktop / session / idle-delay "uint32 0"
Integrador
fonte
2
  1. Você pode usar o ssh para iniciar uma sessão vnc
  2. Use Xnestcom o X11 forwording para iniciar remotamente uma sessão e encaminhá-la para o computador atual. (Eu faço isso de tempos em tempos com minha pi) página de manual

Eu uso Xnestassim:

  • Xnest :1 -ac &
  • então DISPLAY=:1 . /etc/X11/Xsession
recatado
fonte
0

Como iniciar o servidor Vino remotamente sem encaminhar o X (somente linha de comando)

Faça logon no computador remoto como o usuário que compartilhará sua área de trabalho e encaminhará a porta 5900 para a mesma porta no host local. Com o PuTTY, o redirecionamento é definido em Conexão / SSH / Túneis. Com uma linha de comando, use:

 ssh -L 5900:localhost:5900 user@remote-computer

Instale vino-serverse ainda não estiver instalado. Por exemplo:

sudo apt install vino

Ative o compartilhamento da área de trabalho (correspondendo ao número de exibição na 1ª e na 2ª linhas):

echo $DISPLAY
export DISPLAY=:0
dbus-launch --exit-with-session gsettings set org.gnome.Vino enabled true
dbus-launch --exit-with-session gsettings set org.gnome.Vino prompt-enabled false
dbus-launch --exit-with-session gsettings set org.gnome.Vino require-encryption false
/usr/lib/vino/vino-server

Inicie um visualizador VNC e conecte-se ao localhostendereço do servidor VNC.

Futal
fonte
Tem o seguinte. Parece que tudo isso pressupõe que você já está logado em um console da GUI? No protocol specified Failed to connect to Mir: Failed to connect to server socket: No such file or directory Unable to init server: Could not connect: Connection refused Cannot open display: Run 'vino-server --help' to see a full list of available command line options
algal 25/05
0

com base na resposta @Khurshid Alam, apresento o seguinte snippet:

ssh $TARGETHOST -L 5900:localhost:5900 "x11vnc -localhost -display :0 -noxdamage" &; sleep 10 && vinagre localhost

  • É um comando que não requer nenhuma interação

  • Ele cria o túnel SSH com encaminhamento de porta, inicia de x11vncmaneira razoavelmente segura e inicia e conecta o visualizador VNC

  • Requer x11vnc no host de destino, mas nenhuma configuração adicional

  • Requer vinagre no seu PC, mas você pode alterá-lo trivialmente para outro visualizador VNC
mnagel
fonte
0

No PC do servidor.

  • Abra 'preferências do vino' no terminal ou 'Compartilhamento da área de trabalho' usando o traço.

preferências do vino

No PC cliente (de onde você deseja controlar a interface do usuário do servidor).

  • Mantenha as configurações conforme mostrado nas imagens abaixo (com alterações no local do nome de usuário e IP).

Guia * Básico * Guia * Avançado * Guia * SSH *

Armadilhas.

  • Quando tentei definir as preferências do vino no servidor a partir de um PC remoto usando SSH, elas foram alteradas, mas a conexão não aconteceu. Eu tive que fazer isso diretamente na máquina do servidor (não remotamente). Não sei o motivo desse comportamento.
vineeshvs
fonte