Como compartilhar sua área de trabalho no Linux usando x11vnc

Como compartilhar sua área de trabalho no Linux usando x11vnc

Objetivo

Aprendendo a compartilhar sua área de trabalho usando o protocolo VNC e o aplicativo X11VNC

Requisitos

  • Tendo o pacote X11VNC instalado

Convenções

  • # - exige que o comando seja executado com privilégios de raiz também
    diretamente como usuário root ou por uso de sudo comando
  • $ - dado o comando para ser executado como um usuário regular não privilegiado

Introdução

Embora o SSH seja uma ferramenta vital para todos os administradores do sistema, sendo o protocolo mais usado e seguro para administração remota, mesmo capaz de conceder acesso ao servidor de exibição X11, através do encaminhamento X11, não é a ferramenta certa a ser usada quando o alvo desejado desejado é compartilhar uma sessão de desktop inteira. Nesse caso o vnc Protocolo é nosso amigo. Ao usá -lo, podemos controlar completamente outra máquina, compartilhando até eventos de teclado ou mouse.

Embora muitos
Existem implementações do protocolo no GNU/Linux, e algumas delas são integradas a ambientes de desktop específicos, como Vino/Vinagre No Gnome, neste tutorial, focaremos no uso e na configuração do desktop independente x11vnc aplicativo.

Instalação

O x11vnc O aplicativo já deve estar embalado e disponível em seus repositórios de distribuição favoritos. Instalando -o no Fedora, é apenas uma questão de correr:

$ sudo dnf install x11vnc

No Debian, ou uma distribuição baseada no Debian, o comando a ser usado é:

$ sudo apt-get install x11vnc

X11VNC também está disponível nos repositórios de Archlinux. Podemos instalá -lo usando Pacman:

$ sudo pacman -s x11vnc

Depois de instalado, o programa pode ser lançado diretamente do terminal, ou via GUI, usando o lançador de desktop que deve ser encontrado no menu Aplicativos.



Configuração do firewall

Para poder compartilhar nossa sessão de desktop usando o protocolo VNC, devemos configurar o firewall para que ele permita conexões de entrada na porta 5900 qual é a porta VNC-Server padrão. A ação exata a ser executada depende do software de firewall que estamos usando em nosso sistema. Ao usar Firewalld Devemos correr:

$ sudo firewall-cmd --Add-Service = VNC-Server

Como você pode ver, na verdade não especificamos que a porta fosse permitida diretamente: em vez disso, usamos o nome do serviço diretamente, pois é por padrão associado à porta. Lembre -se, ao usar Firewalld, Se uma zona não for especificada com o --zona opção, as regras especificadas serão aplicadas no padrão.

Ao usar ufw, O firewall padrão no Ubuntu, o comando a ser usado é:

$ sudo ufw permitir 5900/tcp

Além disso, se pretenderem permitir a conexão VNC de máquinas fora da rede local, devemos configurar uma regra de permitir a mesma porta em nosso roteador e configurar o encaminhamento IP para o nosso IP da máquina IP.

Familiarizando -se com x11vnc

A maneira mais fácil de começar a usar o X11VNC é invocar o programa no terminal sem nenhuma opção. O programa deve ser lançado sem privilégios de administrador:

$ x11vnc

Por padrão, X11VNC usará a tela : 0, No entanto, isso pode ser alterado usando o -mostrar opção.

A primeira coisa que receberemos depois de executar o comando acima é um aviso sobre não usar uma senha para a conexão. Isso é esperado, já que ainda não configuramos. Correr com essa configuração é muito perigoso, já que qualquer computador com acesso à rede à nossa máquina pode potencialmente visualizar e controlar nossa área de trabalho. A primeira coisa que precisamos fazer, então, é configurar o programa para que exija autenticação quando o acesso for solicitado.



Restringir o acesso com uma senha

Existem basicamente três maneiras pelas quais podemos configurar a autenticação usando x11vnc, eles correspondem ao -Passwd, -StorePasswd, e -passwdfile opções. Vamos ver brevemente como eles modificam o comportamento do programa.

O primeiro método é representado pelo uso do -Passwd Opção que vamos fornecer uma senha de tempo de execução, de um texto simples e simples diretamente no terminal: ela não será salva em nenhum lugar e será usada apenas para a sessão lançada.

O segundo método é usar o -StorePasswd Opção: Aceita dois argumentos opcionais: passar e arquivo, para especificar respectivamente a senha e o arquivo em que deve ser armazenado. No entanto, se usado sem argumentos, ele solicitará a senha interativa e será armazenada no ~/.vnc/passwd arquivo. Por fim, se a opção for usada com apenas um argumento, será interpretado como o arquivo para armazenar a senha. Observe que o arquivo que contém a senha não será criptografado, mas apenas ofuscado com uma chave fixa, portanto, apenas o usuário confiável deve ter permissão para acessar.

Depois que a senha for salva, o programa sairá. A partir desse momento, para lançar uma sessão VNC protegida por senha, o seguinte comando deve ser emitido:

$ x11vnc -rfbauth/path/to/passfile

Onde, por padrão,/Path/to/passfile corresponderá a ~/.vnc/passwd.

A terceira opção que temos é usar o -passwdfile bandeira. Ao usá -la, a senha para a conexão é definida lendo a primeira linha de um arquivo existente, passada como o único argumento da opção. O comportamento da opção pode ser ainda mais modificado pela prefixação do argumento do arquivo. Por exemplo, se o nome do arquivo for prefixado com rm:, O próprio arquivo será excluído após o conteúdo ter sido lido pelo programa. Ao usar o CMD: Prefixo, em vez disso, a sequência especificada após o prefixo será interpretada como um comando externo, e sua saída será usada como a senha. Outros prefixos podem ser usados ​​com esta opção. Para uma referência completa, você pode consultar a Manpage do programa.

Forneça uma senha para sessões apenas para visualização

É possível usar x11vnc Portanto, a conexão criada será executada no modo somente visualizador. Isso significa que os clientes conectados só poderão observar a sessão compartilhada, mas não poderão interagir com ela. Para executar neste modo, o programa deve ser lançado com o -Viewonly opção. É possível configurar uma senha para esse tipo de acesso, para obter uma configuração mais granulada. Para obter este resultado, o -ViewPasswd a opção deve ser usada, fornecendo a senha como um argumento de string. Isso requer, no entanto, que uma senha de acesso total também é fornecida, usando o -Passwd opção que discutimos acima.

Prenda a conexão usando um túnel criptografado

Por padrão, uma conexão VNC não é criptografada, e isso pode ser um risco de segurança. Podemos usar abordagens diferentes para consertar isso. O primeiro seria usar um VPN (Rede Privada Virtual), a segunda a usar um túnel SSL e o terceiro para usar ssh.

Ao descrever como configurar uma VPN está fora do escopo deste artigo, em breve veremos como implementar as outras duas opções.

Use um túnel SSL/TLS

Podemos criptografar a conexão VNC usando um túnel SSL. Para poder conseguir isso, devemos usar o -ssl ou -Nunnel opções. O primeiro exige que o X11VNC seja compilado com libssl apoiar. Esta opção aceita um argumento que é o certificado em PEM formato a ser usado. Se este argumento não for fornecido e o OpenSSL Utilitário está instalado em nosso sistema, um novo certificado será gerado e salvo em ~/.VNC/certs/servidor.PEM.

O -SSLTUNnel a opção, em vez disso, conta com o uso de um programa externo, Nunnel Para fornecer uma conexão SSL. Como -SSL, ele também aceita um certificado PEM como um argumento. Se não for fornecido, um novo será gerado e salvo como mencionado acima (no entanto, esse comportamento pode ser alterado, por exemplo, usando a string TMP Como argumento - neste caso, um certificado temporário será gerado).

Observe que, em ambos os casos, o certificado gerado automaticamente será auto-inscrito, portanto, apesar de fornecer uma conexão segura, não representará uma proteção contra um ataque de homem no meio. Ao gerar o certificado, seremos perguntados se queremos fornecer uma senha para protegê -la e se for o caso, seremos solicitados a inserir.

Por fim, para poder usar um túnel SSL, o aplicativo cliente deve suportar SSL.



Use um túnel SSH

Para usar um túnel SSH, devemos iniciar o servidor VNC usando o SSH, com este comando (isso pressupõe que a porta padrão seja usada):

$ ssh -t -l 5900: localhost: 5900 MACHINA remota 'x11vnc -localhost -Display: 0'

Você provavelmente está familiarizado com o SSH, mas vamos analisar este comando. Primeiro de tudo, corremos SSH com o -t opção, para alocar um pseudo-terminal e com o -eu um, basicamente dissemos para encaminhar porto 5900 em nossa máquina local (cliente) para a mesma porta na máquina remota. Como você pode ver, o comando x11VNC é lançado com o -LocalHost opção. O que isso basicamente faz é permitir apenas conexões da mesma máquina em que o servidor está em execução. Esta opção também é usada automaticamente ao usar um túnel SSL para evitar contorná -lo. Depois disso, podemos iniciar nosso VNCViewer no cliente:

$ vncviewer -PreferreDencoding = zrle localhost: 0

Observe que definimos a codificação preferida para Zrle, Isso deve ajudar o desempenho sobre o SSH.

Executar no modo gráfico

Como dito antes, x11vnc também pode ser usado no modo gráfico, usando o iniciador de desktop. Por padrão, o programa mostrará uma janela na qual podemos selecionar qual porta usar, além de outras opções:

Selecione a janela da porta x11VNC

Depois de clicar no botão "OK", um ícone será exibido na bandeja do sistema e uma janela com suas propriedades aparecerá na tela. No lado esquerdo, algumas instruções úteis serão exibidas para uma inicialização rápida. A partir dessa interface, também podemos escolher uma senha de sessão e somente visualização:

Janela de propriedades X11VNC

Conclusões

Embora o VNC nem chegue perto de representar um substituto para o SSH, pode ser a ferramenta certa para usar para algumas tarefas específicas. Neste tutorial, vimos as etapas fundamentais necessárias para configurar e usar o x11vnc servidor. Embora muitas alternativas estejam disponíveis, o X11VNC é uma ferramenta muito simples e independente de desktop, que pode ser usada em qualquer lugar.

Tutoriais do Linux relacionados:

  • Compartilhe sua tela de desktop com VNC no Linux
  • Configurando o acesso ao servidor VNC em um Redhat Linux
  • Utilitários de tela remota VNC para Linux
  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Linux: Configurar SSH
  • Como aproveitar ao máximo o OpenSsh
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Comandos básicos do Linux