Algúns usuarios alugan un VPS relativamente barato con Windows para executar servizos de escritorio remoto. O mesmo pódese facer en Linux sen aloxar o teu propio hardware nun centro de datos ou alugar un servidor dedicado. Algunhas persoas necesitan un entorno gráfico familiar para probar e desenvolver, ou un escritorio remoto cunha canle ampla para traballar desde dispositivos móbiles. Hai moitas opcións para usar o sistema de Virtual Network Computing (VNC) baseado no protocolo Remote FrameBuffer (RFB). Neste breve artigo dirémosche como configuralo nunha máquina virtual con calquera hipervisor.
Imaxe:
Selección dun servidor VNC
O servizo VNC pódese integrar no sistema de virtualización e o hipervisor conectarao cos dispositivos emulados e non será necesaria ningunha configuración adicional. Esta opción implica unha sobrecarga significativa e non é soportada por todos os provedores, mesmo nunha implementación menos intensiva en recursos, cando en lugar de emular un dispositivo gráfico real, transfírese unha abstracción simplificada (framebuffer) á máquina virtual. Ás veces, un servidor VNC está ligado a un servidor X en execución, pero este método é máis axeitado para acceder a unha máquina física, e nunha virtual crea unha serie de dificultades técnicas. A forma máis sinxela de instalar un servidor VNC é cun servidor X integrado. Non precisa de dispositivos físicos (adaptador de vídeo, teclado e rato) nin a súa emulación mediante hipervisor, polo que é apto para calquera tipo de VPS.
Instalación e configuración
Necesitaremos unha máquina virtual con Ubuntu Server 18.04 LTS na súa configuración predeterminada. Hai varios servidores VNC nos repositorios estándar desta distribución:
A instalación do ambiente de escritorio con todas as dependencias faise co seguinte comando:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
A continuación, cómpre instalar o servidor VNC:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Facelo como superusuario é unha mala idea. Crear un usuario e un grupo:
sudo adduser vnc
Engadimos o usuario ao grupo sudo para que poida realizar tarefas relacionadas coa administración. Se non hai tal necesidade, pode omitir este paso:
sudo gpasswd -a vnc sudo
O seguinte paso é executar o servidor VNC con privilexios de usuario vnc para crear un contrasinal seguro e ficheiros de configuración no directorio ~/.vnc/. A lonxitude do contrasinal pode ser de 6 a 8 caracteres (os caracteres adicionais córtanse). Se é necesario, tamén se establece un contrasinal só para visualización, é dicir. sen acceso ao teclado e ao rato. Os seguintes comandos execútanse como usuario vnc:
su - vnc
vncserver -localhost no
Por defecto, o protocolo RFB usa o intervalo de portos TCP de 5900 a 5906 - este é o chamado. portos de visualización, cada un correspondente a unha pantalla de servidor X. Neste caso, os portos están asociados a pantallas de :0 a :6. A instancia do servidor VNC que iniciamos escoita o porto 5901 (pantalla: 1). Outras instancias poden funcionar noutros portos con pantallas :2, :3, etc. Antes de continuar a configuración, cómpre deter o servidor:
vncserver -kill :1
O comando debería mostrar algo así: "Matar a ID de proceso Xtigervnc 18105... éxito!"
Cando TigerVNC se inicia, executa o script ~/.vnc/xstartup para configurar os axustes de configuración. Imos crear o noso propio script, gardando primeiro unha copia de seguridade do existente, se existe:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
A sesión do entorno de escritorio XFCE iníciase co seguinte script xstartup:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
O comando xrdb é necesario para que VNC lea o ficheiro .Xresources no directorio de inicio. Alí o usuario pode definir varias configuracións gráficas do escritorio: representación de fontes, cores do terminal, temas do cursor, etc. O script debe ser executable:
chmod 755 ~/.vnc/xstartup
Isto completa a configuración do servidor VNC. Se o executas co comando vncserver -localhost no (como usuario vnc), podes conectarte co contrasinal especificado anteriormente e ver a seguinte imaxe:
Iniciando un servizo a través de systemd
Iniciar manualmente un servidor VNC non é axeitado para o uso en combate, polo que configuraremos un servizo do sistema. Os comandos execútanse como root (usamos sudo). Primeiro, imos crear un novo ficheiro de unidade para o noso servidor:
sudo nano /etc/systemd/system/[email protected]
O símbolo @ no nome permítelle pasar un argumento para configurar o servizo. No noso caso, especifica o porto de visualización VNC. O ficheiro da unidade consta de varias seccións:
[Unit]
Description=TigerVNC server
After=syslog.target network.target
[Service]
Type=simple
User=vnc
Group=vnc
WorkingDirectory=/home/vnc
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
A continuación, cómpre notificar a systemd sobre o novo ficheiro e activalo:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
O número 1 do nome especifica o número de pantalla.
Detén o servidor VNC, iníciao como servizo e comproba o estado:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Se o servizo está funcionando, deberíamos obter algo así.
Conexión de escritorio
A nosa configuración non usa cifrado, polo que os paquetes de rede poden ser interceptados polos atacantes. Ademais, en servidores VNC con bastante frecuencia
sudo netstat -ap |more
En Linux, FreeBSD, OS X e outros sistemas operativos similares a UNIX, faise un túnel desde o ordenador cliente mediante a utilidade ssh (sshd debe estar executado no servidor VNC):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
A opción -L vincula o porto 5901 da conexión remota ao porto 5901 no host local. A opción -C permite a compresión e a opción -N di a ssh que non execute o comando remoto. A opción -l especifica o inicio de sesión para o inicio de sesión remoto.
Despois de configurar o túnel no ordenador local, cómpre iniciar o cliente VNC e establecer unha conexión co host 127.0.0.1:5901 (localhost:5901), utilizando o contrasinal especificado anteriormente para acceder ao servidor VNC. Agora podemos comunicarnos de forma segura a través dun túnel cifrado co entorno de escritorio gráfico XFCE no VPS. Na captura de pantalla, a utilidade superior está a executarse no emulador de terminal para mostrar o baixo consumo de recursos informáticos da máquina virtual. Entón todo dependerá das aplicacións do usuario.
Podes instalar e configurar un servidor VNC en Linux en case calquera VPS. Isto non require configuracións caras e que consumen moito recursos con emulación de adaptadores de vídeo nin a compra de licenzas de software comercial. Ademais da opción de servizo do sistema que consideramos, hai outras: lanzar en modo daemon (a través de /etc/rc.local) cando se inicia o sistema ou baixo demanda a través de inetd. Este último é interesante para crear configuracións multiusuario. O Internet Superserver iniciará o servidor VNC e conectará o cliente a el, e o servidor VNC creará unha nova pantalla e iniciará a sesión. Para autenticarse nel, pode usar un xestor de visualización gráfico (por exemplo,
Fonte: www.habr.com