Para assumir o controle de uma sessão X em execução, você precisará configurar seu servidor VNC para se conectar ao mesmo monitor que o X. Geralmente, X será conectado ao primeiro monitor - :0
.
Você também precisará da Autoridade X para essa sessão X. Isso pode ser encontrado acessando o arquivo X Authority que o Gerenciador de Vídeo remoto está usando. Isso depende do seu Gerenciador de Exibição e pode ser encontrado usando ps aux
e grep
. Por exemplo: psaux | grep Xorg
fornece algo semelhante a:
/usr/libexec/Xorg -background none :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt1 -noswitch
Observe a opção -auth
, pois você precisará dela com o VNC. Em seguida, você precisa executar algo como o seguinte como root
no computador remoto após a instalação do x11vnc
:
/usr/bin/x11vnc -norc -forever -shared -bg -autoport 5900 -auth /var/run/lightdm/root/:0
A maneira mais fácil seria criar um serviço que executa isso para você na inicialização. Em distros que usam systemd
, crie um arquivo /etc/systemd/system/x11vnc.service
semelhante ao seguinte:
[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=display-manager.service
[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -norc -forever -shared -bg \
-autoport 5900 \
-rfbauth /etc/x11vnc.pass \
-o /var/log/x11vnc.log \
-auth /var/run/lightdm/root/:0
[Install]
WantedBy=graphical.target
Observe a opção -rfbauth
. Você precisará criar o arquivo de senha com antecedência usando:
$ sudo x11vnc -storepasswd /etc/x11vnc.pass
Como alternativa, se você achar que não precisa de sessões VNC protegidas por senha, simplesmente remova a linha -rfbauth
.
Ativar na inicialização com:
$ sudo systemctl enable x11vnc.service
Inicie manualmente com:
$ sudo systemctl start x11vnc.service
Agora você pode se conectar ao computador remoto com seu cliente VNC e assumir a sessão.