Como compartilhar sua área de trabalho no Linux usando x11vnc
- 2333
- 48
- Mr. Mitchell Hansen
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 desudo
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