Instalando TigerVNC no Ubuntu 18.04 Server (64-bits)
# sudo apt-get install tasksel
# sudo tasksel
Selecione Ubuntu desktop (será instalado o xorg com o Gnome)
# sudo reboot
Aguarda reboot. conecte novamente.
# sudo apt-get install tigervnc-standalone-server tigervnc-xorg-extension
Configurando:
Entre com o usuário que deseja criar a senha para o VNC e digite
$ tigervncserver
Ou como root, rode comando como outro usuário, neste caso ubuntu:
$ su - ubuntu -c tigervncserver
You will require a password to access your desktops.
Password: <digite uma senha>
Would you like to enter a view-only password (y/n)? y
Password: <digite uma senha para acesso apenas visualização>
A senha será armazenada de forma encriptada pelo tigervnc no diretório:
~/.vnc/passwd
Verificando:
$ netstat -pltn | grep tiger
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN 2047/Xtigervnc
tcp6 0 0 ::1:5901 :::* LISTEN 2047/Xtigervnc
É possível ver que o tigervnc está rodando, só que apenas para acesso local, sem acesso externo, só será possível conectar através de túnel SSH.
Matando o processo:
$ tigervncserver -kill :1
Killing Xtigervnc process ID 8634... success!
Matando todos os processos:
# pkill tigervncserver
ou
# tigervncserver -kill :*
Liberando acesso externo:
# vi /etc/vnc.conf
Incluir a linha:
$localhost = “no”;
# tigervncserver
root@ubuntu-18:/etc# netstat -pltn | grep tiger
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 10752/Xtigervnc
tcp6 0 0 :::5901 :::* LISTEN 10752/Xtigervnc
Colocando TigerVNC na inicialização do sistema:
Criar o arquivo de inicialização em /etc/init.d/vncserver
Obs.: No Ubuntu 16.04 o TightVNC não está disponíve no repositório do apt, é necessário instalar a partir do pacote deb, quando se instala a partir do pacote ele já cria o arquivo /etc/init.d/vncserver
No Ubuntu 18.04 quando se instala a partir do repositório do apt-get ele não cria os arquivos de inicialização.
Modelo do arquivo /etc/init.d/vncserver
#!/bin/bash # # Init file for TigerVNC Server # # chkconfig: - 91 35 # description: TigerVNC remote X administration daemon. # # processname: Xvnc ### BEGIN INIT INFO # Provides: vncservers # Required-Start: networking # Required-Stop: networking # Default-Start: # Default-Stop: 0 1 2 3 4 5 6 # Short-Description: Starts and stops vncserver # Description: Used to provide remote X administration services. ### END INIT INFO # Source function library. . /lib/lsb/init-functions ### Default variables SYSCONFIG="/etc/default/vncservers" VNCSERVERS="" ### Read configuration [ -r "$SYSCONFIG" ] && . "$SYSCONFIG" RETVAL=0 prog=$"VNC server" start() { echo -n $"Starting $prog: " ulimit -S -c 0 >/dev/null 2>&1 for display in ${VNCSERVERS}; do echo -n "${display} " if [ -r $(eval echo ~${display##*:})/.vnc/passwd ]; then unset BASH_ENV ENV log_begin_msg "Starting VNC Server for user ${display##*:}:" su ${display##*:} -c "cd ~${display##*:} && [ -f .vnc/passwd ] && vncserver :${display%%:*} ${VNCSERVERARGS[${display%:*}]}" RETVAL="$?" if [ "$RETVAL" -ne 0 ]; then log_end_msg 1 break else log_end_msg 0 fi else log_begin_msg "Not starting VNC Server for user ${display##*:}.\n File \"~${display##*:}/.vnc/passwd\" not found.\n Create a password file for the VNC server with vncpasswd" log_end_msg 1 fi done echo [ "$RETVAL" -eq 0 ] && touch "/var/lock/vncserver" return $RETVAL } stop() { echo -n $"Shutting down $desc: " for display in ${VNCSERVERS}; do echo -n "${display} " unset BASH_ENV ENV log_begin_msg "Shutting down VNC Server for user ${display##*:}: " su ${display##*:} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1 RETVAL="$?" [ "$RETVAL" -eq 0 ] && log_end_msg 0 || log_end_msg 1 done echo [ "$RETVAL" -eq 0 ] && rm -f "/var/lock/vncserver" return $RETVAL } restart() { stop start } case "$1" in start) start ;; stop) stop ;; restart|reload) restart ;; *) echo $"Usage: $0 {start|stop|restart}" RETVAL=1 esac exit $RETVAL |
Após criar o arquivo, inclua ele para a inicialização:
# update-rc.d apache2 defaults
# service vncserver start
# service --status-all
[ + ] vncserver
# update-rc.d vncserver enable 5
Cria arquivo de configuração em /etc/default/vncservers
# The VNCSERVERS variable is a list of display:user pairs. # # Uncomment the lines below to start a VNC server on display :2 # as my 'myusername' (adjust this to your own). You will also # need to set a VNC password; run 'man vncpasswd' to see how # to do that. # # DO NOT RUN THIS SERVICE if your local area network is # untrusted! For a secure way of using VNC, see this URL: # http://kbase.redhat.com/faq/docs/DOC-7028 # Use "-nolisten tcp" to prevent X connections to your VNC server via TCP. # Use "-localhost" to prevent remote VNC clients connecting except when # doing so through a secure tunnel. See the "-via" option in the # `man vncviewer' manual page. # VNCSERVERS="2:myusername" # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost" VNCSERVERS="1:ubuntu 2:teste" |
Esse arquivo está configurado para iniciar um vnc na porta 5901 para o usuário ubuntu e um vnc na porta 5902 para o usuário teste
Referencias:
https://www.computersnyou.com/4945/re-install-xorg-xserver-completely-ubuntu/
https://wiki.archlinux.org/index.php/TigerVNC
https://www.digitalocean.com/community/tutorials/como-instalar-e-configurar-o-vnc-no-ubuntu-16-04-pt