Como configurar o x11vnc para acessar com a tela gráfica de login?


50

Eu tenho um servidor executando o Ubuntu 12.10 e preciso poder conectar-me remotamente a esse servidor sem estar conectado.

Encontrei muitas soluções, mas nenhuma parece funcionar com a 12.10.

Alguém pode me dar instruções passo a passo sobre como configurar x11vncpara iniciar como um serviço (antes do login do usuário) para que, ao conectar-se ao VNC, seja exibida uma tela gráfica de login?

Eu sou novo no Linux, por isso, forneça o máximo de detalhes possível em suas respostas / comentários.

obrigado


11
A quantidade de todos esses comandos e configurações que um usuário comum precisa fazer apenas para se conectar à tela de um computador remoto é simplesmente ridícula. No Windows, ele simplesmente funciona ... com alguns cliques do mouse, embora o recurso de área de trabalho remota funcione apenas em edições caras. Passei algumas horas e ainda não consegui fazer o VNC iniciar automaticamente. É por isso que o Linux continuará sendo um sistema operacional impopular para usuários comuns ... (Por favor, não aponte coisas como "O Linux é usado no Android!" Ou algo assim. As palavras têm significados diferentes em um contexto diferente. Você sabe o que "Linux" quero dizer com isso )
Damn Vegetables

Respostas:


43

As respostas acima resolvem o problema, apesar de algumas alterações nas versões do Ubuntu com systemd (15.04+), da seguinte maneira:

  • Aproveite as novas -auth guessfuncionalidades do x11vnc - o que ajuda!
  • Atualização para systemd (não inicializada)

Execute o seguinte para instalar:

sudo apt-get install x11vnc
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
# for Ubuntu 15.04+
sudo nano /lib/systemd/system/x11vnc.service
# for Ubuntu 16.10+
sudo nano /etc/systemd/system/x11vnc.service

Insira isso no arquivo:

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

Então comece com:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

E verifique se o serviço inicia na inicialização:

sudo systemctl enable x11vnc

Referenciada bbs.archlinux.org/viewtopic.php?id=168756 alguns conselhos sobre Requer / Afters params
babelmonk

2
por que essa resposta não está marcada como a resposta correta?
Cybex

11
Se não houver nenhuma exibição em tudo, então pode-se querer definir a resolução arbitrária: sudo xrandr --fb 1920x1080.
Orient

2
Não é um dado que o x11vnc funcionará imediatamente. Seria uma boa idéia fornecer um comando de teste antes de se comprometer com um serviço que é reiniciado em caso de falha a cada 2 segundos. Estou usando o lightdm e o xfce4 em um servidor Ubuntu 17.10 sem nuvem. Restart-secdeve serRestartSec
Ray Foss

11
O Ubuntu 18.04 também parece querer RestartSecmais do que Restart-sec.
21818 Scott Willeke

43

Instale x11vnc:

sudo apt-get install x11vnc

Crie uma senha para seu usuário:

x11vnc -storepasswd

Se você possui a configuração ssh, pode usá-lo para iniciar o x11vnc, assumindo que você já está logado, mas lembre-se de dizer para ele usar seu arquivo de senhas:

x11vnc -usepw

Se você não estiver logado, receberá um erro com a explicação:

If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:

 gdm:     -auth /var/gdm/:0.Xauth
          -auth /var/lib/gdm/:0.Xauth
 kdm:     -auth /var/lib/kdm/A:0-crWk72
          -auth /var/run/xauth/A:0-crWk72
 xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
 dtlogin: -auth /var/dt/A:0-UgaaXa

Supondo que você esteja usando o lightdm para o logon, você pode corrigir esse problema e iniciar o x11vnc com o comando:

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Não tenho certeza se esta é a melhor ideia para executar o x11vnc como root. Talvez alguém possa editar com uma maneira de acessar o login sem usar o sudo.

Quando estiver em execução, você poderá conectar-se usando um cliente vnc como o krdc (para KDE). Você pode querer usar o GNU Screen para manter o x11vnc em execução sem precisar da sessão ssh aberta

Consegui descobrir isso usando http://ubuntuforums.org/showthread.php?t=2039022 .

Aqui está um exemplo de trabalho inicial que você pode usar para executá-lo na inicialização. Ele precisa ser colocado em /etc/init/x11vnc.conf. (Observe que as versões mais recentes do Ubuntu usam systemd, veja a outra resposta que possui uma amostra de configuração do systemd):

# description "start and stop x11vnc"

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

console log
#chdir /home/
#setuid 1000
#setgid 1000

respawn
respawn limit 20 5

exec x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

Depois de criar esse arquivo, você pode iniciá-lo executando: sudo start x11vnc Você pode verificar o log em: /var/log/upstart/x11vnc.log


11
Você pode executar x11vnccomo um usuário normal, sem problemas. Por exemplo: ssh para o host e executado x11vnc -safer -forever -display :0 2>&1 &em uma sessão tmux (boas práticas), ele será executado em $USER.
Terry Wang

Além disso, apenas para referência, para alterar a janela de visualização: superuser.com/questions/270608/…
Wtower

2
Isso não explica como para tê-lo auto start conforme solicitado (e é um requisito comum para tal característica a)
LovesTha

11
Veja aqui uma lista completa de opções x11vnc. Levei muito tempo para encontrar este: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

11
E veja aqui para um excelente tutorial sobre como fazer essa configuração em um Raspberry Pi com auto-start na inicialização: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

14

Aqui está como:

  1. Instale o servidor X11VNC (ou através do Ubuntu Software Center -> X11VNC Server)

    sudo apt-get install x11vnc
    
  2. Crie um arquivo de senha do VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Crie um arquivo de trabalho no editor nano (ou gedit, leafpad etc.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Cole isso no arquivo:

    start on login-session-start
    
    script
    
    /usr/bin/x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log
    
    end script
    
  5. Salve o arquivo. Você criou um trabalho para o evento Upstart login-session-start .

  6. Reinicie o Ubuntu.

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


Mas como fazê-lo funcionar quando o lightdm não cria o arquivo de autenticação até que um monitor seja conectado?
LovesTha

@didibus Eu tenho tentado fazer isso no Lubuntu, mas x11vncfalha ao iniciar automaticamente todas as vezes. Nem sequer começará como um serviço. A sintaxe do arquivo está correta e eu posso começar x11vncdo shell muito bem. o que estou perdendo?
Linuxgringo

Isso funciona no Lubuntu também. Especificamente, a versão do LubMaker para o Banana Pi do LeMaker.
#

3

babelmonks responde como um script bash, copie e salve como x11vnc.sh e execute com sudo bash /path/to/file/x11vnc.sh (desculpe, não tenha representante suficiente para postar um comentário)

#!/bin/bash
#install x11vnc & set password
apt-get install x11vnc -y
x11vnc -storepasswd 123456 /etc/x11vnc.pass
#create config file for  system service
cat > /lib/systemd/system/x11vnc.service <<-EOF
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
 ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target
EOF
#restart new services &  enable on boot
systemctl daemon-reload
systemctl start x11vnc
systemctl enable x11vnc

Se você quiser melhorar outra resposta, sugira uma edição e não crie uma nova resposta.
David Foerster

Terá todo o prazer adicioná-lo ao meu se você gostaria de criar uma edição @ nix-badweasel
babelmonk


1

Aqui está uma configuração para sddm(para o KDE 5). Atualmente, -auth guessnão funciona sddm, o arquivo auth é sempre diferente, portanto precisamos de algo parecido -auth /var/run/sddm/*. O serviço parece,

[Unit]
Description="x11vnc"
After=multi-user.target

[Service]
ExecStart=/bin/sh -c "/usr/bin/x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass"
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target

Eu tenho que colocá-lo depois multi-user.target, se depois display-manager.service, x11vncnão conseguir encontrar o arquivo auth, talvez sddmgere o arquivo auth mais tarde. Isso é testado no Manjaro 18.


0

Eu uso meu próprio shell: https://github.com/dvdvideo1234/UbuntuBatches/tree/master/x11VNC

start on login-session-start

script

sudo /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /var/srv/x11vnc/x11vnc.pass -forever -bg -rfbport <your_port> -o /var/srv/x11vnc/x11vnc.log

end script

no arquivo:

/etc/init/x11vnc.conf

Faz com que seja iniciado automaticamente na inicialização, mesmo na tela de logon que solicita uma senha.


0

Instale o pacote x11vnc

#sudo apt-get install x11vnc

Em seguida, defina a senha

#x11vnc -usepw

Em seguida, crie um script de inicialização para x11vnc

#sudo nano /etc/x11vnc.sh

No arquivo:

/usr/bin/x11vnc -bg -forever -shared -reopen -usepw

Então salve

#sudo chmod 777 /etc/x11vnc.sh

Em seguida, adicione o arquivo de script ao Control Center => Aplicativo de Inicialização. Em seguida, clique em Adicionar

> Name-----------x11vnc

> Command-----<map the script file

> Comment------service

Isso deve ser necessário para adicionar a todos os usuários

Isso será executado somente após o login do usuário

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.