Como acessar uma máquina ubuntu via VNC a partir da tela de login?


17

Quero acessar uma máquina Ubuntu remotamente via VNC. Mas só consigo acessar a máquina Ubuntu se o usuário estiver conectado. Quero acessar a máquina ubuntu via VNC a partir da própria tela de login. Podemos acessar todas as máquinas Windows a partir da tela de login. No entanto, não conseguimos acessar a máquina Ubuntu a partir da tela de login. Existe alguma maneira, mas não estou ciente dos detalhes. Alguém pode dar uma solução para esse problema?


Se a outra máquina estiver na mesma LAN, seria viável usar apenas o XDMCP em vez do VNC. Se não estiver na mesma LAN, o X não acelerado na rede poderá ser muito lento.
Robin Green

Respostas:


10

Sua melhor aposta é instalar o xrdp Instale o xrdp . Após a instalação, você pode usar um cliente RDP para conectar-se à máquina. Em seguida, suas credenciais serão solicitadas como na tela de login.


Eu instalei o xrdp, mas ainda não consigo acessar a máquina ubuntu na tela de login.
Kartick87 17/05

@karthick: Você está se conectando à máquina com VNC ou usando um cliente RDP?
Nathan Osman

Não encontro o cliente RDP na minha máquina. Onde será localizado?
Karthick87 18/05

@karthick: Você está usando o Ubuntu como seu cliente? Nesse caso, o programa a ser usado é chamado "Terminal Server Client". No Windows, é chamado de "Área de trabalho remota" IIRC.
Nathan Osman

Sim obrigado. É possível criar um iniciador para o Terminal Server Client?
Karthick87 18/05

5

No geral, eu recomendariax11vnc .

TL; DR

apt-get -y install x11vnc
x11vnc -storepasswd

Digite sua senha, ela é salva por padrão no ~/.vnc/passwd formulário criptografado INSECURE. Pode ser descriptografado porque a chave é conhecida. .. proteja-o com permissões do sistema de arquivos)

chmod 600 ~/.vnc/passwd

Salve meu script auxiliar localmente:

mkdir ~/bin/
curl https://gist.githubusercontent.com/trinitronx/76d2bf98489e5e3e84fa/raw/53885d87f91320b574ca4f7d609e4bb268274f68/start_x11vnc.sh  > ~/bin/start_x11vnc.sh && chmod +x ~/bin/start_x11vnc.sh

No host do seu cliente VNC:

ssh -f  -L 5900:127.0.0.1:5900 -p 22 youruser@your-ubuntu-host.example.com '~/bin/start_x11vnc.sh && sleep 10'

Ou, no host do servidor VNC, execute:

~/bin/start_x11vnc.sh

através de um terminal (ou inicie-o como um daemon com -forevercomo serviço init.d , serviço inicial , unidade systemd ou como desejar)

Agora execute o seu cliente VNC de sua escolha no host do cliente, aponte para 127.0.0.1:5900:, faça o login com a senha salva acima.

Use o X11 "Magic Cookie"

A maioria dos gerenciadores de exibição do X (como GDM , XDM , KDM ) inicia um servidor X11 inicial e se autentica com um MIT Magic Cookie . Dependendo do seu gerenciador de exibição, o cookie mágico será encontrado em um dos vários locais .

Tive sorte em abrir uma sessão VNC na tela de login do Ubuntu GDM * NOTE1 encontrando o cookie mágico com este script :

#!/bin/bash
DEFAULT_DISPLAY=:0
X11VNC_DISPLAY="$DEFAULT_DISPLAY"

if [ -x /usr/bin/x11vnc ]; then
     [ "$1" == '-nocache' ] && CACHE_FLAG='-noncache' || CACHE_FLAG='-noncache'
     [ "$2" == '-guess' ] && GUESS_FLAG='-auth guess' || GUESS_FLAG=''
         [ -f /root/.vnc/passwd ] && PASSWORD="/root/.vnc/passwd"
         [ -f $HOME/.vnc/passwd ] && PASSWORD="$HOME/.vnc/passwd"
         [ ! -z "$PASSWORD" ] && x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage
    EXIT_CODE=$?
     if [ $EXIT_CODE -ne 0 ]; then

        echo "\n*********************************************************************"
        echo "*** Could not start x11vnc!  Trying again with gdm MAGIC_COOKIE! ***"
        echo "*********************************************************************\n"

        # Old GDM location for Ubuntu <= 17.10
        MAGIC_COOKIE_FILE=`sudo find /var/run/gdm/ -iname database | grep for-gdm`

        # New GDM location for Ubuntu >= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && NUM_MAGIC_COOKIE_FILE_SESSIONS=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' 2>/dev/null | wc -l`
        if [ -z "$MAGIC_COOKIE_FILE" -a "$NUM_MAGIC_COOKIE_FILE_SESSIONS" -gt 1 ]; then
            # Find the current user's session
            MAGIC_COOKIE_FILE=`sudo find /run/user/$(id -u) -iwholename '*/gdm/*' -iname '*Xauthority'`
            X11VNC_DISPLAY=":1"
        else
            # Find the GDM user's session (or whichever shows up first in ps list)
            # This should pick up the original gdm session which grabs :0
            # If you login after gdm login screen, your Xorg server may end up on another display!
            # Workaround for now is to restart x11vnc on that display number
            [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /run/user/ -iwholename '*/gdm/*' -iname '*Xauthority' | head -n1`
        fi
        # Old lightdm location for Ubuntu <= 17.10
        [ -z "$MAGIC_COOKIE_FILE" ] && MAGIC_COOKIE_FILE=`sudo find /var/lib -name '.Xauthority' -o -wholename '/var/run/lightdm/root/:0' | head -n1`
        #sudo bash -c "[ -z \"$MAGIC_COOKIE_FILE\" -a -e /var/run/lightdm/root/:0 ]" && MAGIC_COOKIE_FILE='/var/run/lightdm/root/:0'
        [ -n "$MAGIC_COOKIE_FILE" -a -z "$GUESS_FLAG" ] && AUTH_COOKIE_FLAG="-auth $MAGIC_COOKIE_FILE"
        [ ! -z "$PASSWORD" ] && sudo x11vnc -display $X11VNC_DISPLAY -xkb -rfbauth $PASSWORD -rfbport 5900 -shared -forever -nowf -norc -notruecolor -bg $GUESS_FLAG $CACHE_FLAG -noxdamage ${AUTH_COOKIE_FLAG}
    fi
fi

Eu posso iniciar esse script (eu o chamei start_x11vnc.sh) a qualquer momento via SSH ... mesmo antes do gdmlogin na tela de login. Ele lança um x11vncservidor ao qual eu posso conectar através do túnel SSH . (Use ssh -L 5900:127.0.0.1:5900ou adicione LocalForward 5900 127.0.0.1:5900à entrada do seu host em ~/.ssh/config).

NOTA1 : Em algumas novas versões de distribuição, como o Ubuntu> = 17.10, a exibição da sessão X de login do GDM é completamente separada da exibição da sessão X do usuário conectado. Portanto, é necessário primeiro conectar-se à sessão do GDM X, fazer login ... e finalmente desconectar e reconectar-se à sessão X recém-iniciada. Por que agora eles fazem dessa maneira é um mistério, mas quebrou a versão antiga desse script.


Não funciona. O cliente VNC se conecta e fecha imediatamente
Dims 31/08

@Dims Use o comando:vncviewer <remote_ip>
Gokul NC

O script foi quebrado para novas versões do Ubuntu ... Eu atualizei-o com um hack para permitir que ele funcionasse novamente. Parece que agora a sessão de exibição do gdm agora está separada da sessão conectada; portanto, se você estiver usando este script no Ubuntu, ele será levado primeiro à tela de login do GDM e, em seguida, ao efetuar o login, a exibição da sessão X ficará em branco. Agora você precisa interromper o primeiro processo x11vnc e executar novamente o script novamente para anexar novamente à sessão e exibição X logadas separadas.
TrinitronX 31/01

2

Para habilitar o login do GDM por uma conexão remota VNC ssh, tente com o X11vnc. Veja também esta resposta .


0

Veja como fazer isso com o VNC, se você não quiser usar o RDP:

  1. Instale o servidor X11VNC: sudo apt-get install x11vnc(ou através do Ubuntu Software Center -> X11VNC Server)
  2. Defina uma senha:

    sudo mkdir /etc/x11vnc
    sudo x11vnc -storepasswd /etc/x11vnc/passwd
    

    Escolha ysalvar a senha.

  3. Crie um arquivo vazio /etc/initchamado x11vnc.conf:

    sudo -H gedit /etc/init/x11vnc.conf
    
  4. Cole isso no arquivo:

    start on login-session-start
    
    exec x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc/passwd -rfbport 5900 -bg -o /var/log/x11vnc.log
    
  5. Salvar e fechar

  6. Reinicie o Ubuntu

É isso aí! Agora você deve conseguir conectar-se a qualquer cliente VNC antes do login.


Isso não funcionou.
mace

@mace Interessante, funcionou para mim, talvez seja dependente da versão do Ubuntu. Infelizmente, não me lembro qual era a versão do meu Ubuntu quando fiz esse procedimento.
Didier A.

0

re: tente com o X11vnc

x11vnc não é atualizado desde setembro de 2011 !!!! Existem bugs conhecidos e estou sendo acionado por um que aciona uma terminação de quebra de pilha do x11vnc sempre que um diálogo pop-up (como clicar no menu 'arquivo' em qualquer janela) desconecta a sessão.

Os Raspberry Pi podem se conectar à sessão do gerenciador de desktop em: 0, por que diabos isso é um problema tão grande para o Ubuntu?!?! Por que é necessário confiar em um programa órfão de 7 anos para fazer isso em qualquer sistema operacional moderno?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.