14 Sessões gráficas remotas com VNC #
O VNC (Virtual Network Computing) permite acessar um computador remoto por meio de uma área de trabalho gráfica e executar aplicativos gráficos remotos. O VNC é independente de plataforma e acessa a máquina remota de qualquer sistema operacional. Este capítulo descreve como se conectar a um servidor VNC com os clientes de área de trabalho vncviewer e Remmina e como operar um servidor VNC.
O SUSE Linux Enterprise Desktop suporta dois tipos diferentes de sessões VNC: sessões únicas, que permanecem “ativas” enquanto a conexão VNC do cliente está ativada, e sessões persistentes, que permanecem “ativas” até serem explicitamente terminadas.
Um servidor VNC é capaz de oferecer ambos os tipos de sessões simultaneamente em portas diferentes, mas uma sessão aberta não pode ser convertida de um tipo em outro.
14.1 Cliente vncviewer
#
Para se conectar a um serviço VNC fornecido por um servidor, é necessário um cliente. O padrão no SUSE Linux Enterprise Desktop é o vncviewer
, incluído no pacote tigervnc
.
14.1.1 Conexão por meio da CLI do vncviewer #
Para iniciar o viewer do VNC e começar uma sessão com o servidor, use o comando:
>
vncviewer jupiter.example.com:1
Em vez do número de exibição do VNC, você também pode especificar o número da porta com dois-pontos duplos:
>
vncviewer jupiter.example.com::5901
O número real de exibição ou de porta especificado no cliente VNC deve ser igual ao número selecionado pelo comando vncserver
na máquina de destino. Consulte a Seção 14.4, “Configurando sessões persistentes do servidor VNC” para obter mais informações.
14.1.2 Conexão por meio da GUI do vncviewer #
Ao executar o vncviewer
sem especificar --listen
nem um host ao qual se conectar, será exibida uma janela solicitando detalhes da conexão. Informe o host no campo , conforme mostrado na Seção 14.1.1, “Conexão por meio da CLI do vncviewer”, e clique em .
14.1.3 Notificação de conexões não criptografadas #
O protocolo VNC suporta diferentes tipos de conexões criptografadas, o que não deve ser confundido com autenticação de senha. Se uma conexão não usar TLS, o texto “(Conexão não criptografada)!” poderá aparecer no título da janela do viewer do VNC.
14.2 Remmina: o cliente de área de trabalho remota #
Remmina é um cliente de área de trabalho remota moderno e cheio de recursos. Ele suporta vários métodos de acesso, por exemplo, VNC, SSH, RDP e Spice.
14.2.1 Instalação #
Para usar o Remmina, verifique se o pacote remmina está instalado no sistema e, se não estiver, instale-o. Lembre-se também de instalar o plug-in VNC para Remmina:
#
zypper in remmina remmina-plugin-vnc
14.2.2 Janela principal #
Execute o Remmina digitando o comando remmina
.
A janela principal do aplicativo mostra a lista de sessões remotas armazenadas. Nela, você pode adicionar e gravar uma nova sessão remota, iniciar rapidamente uma nova sessão sem gravá-la, iniciar uma sessão que já foi gravada ou definir as preferências globais do Remmina.
14.2.3 Adicionando sessões remotas #
Para adicionar e gravar uma nova sessão remota, clique em na parte superior esquerda da janela principal. A janela é aberta.
Preencha os campos que especificam o perfil da sessão remota recém-adicionada. Os mais importantes são:
- Nome
Nome do perfil. Ele será listado na janela principal.
- Protocolo
O protocolo a ser usado na conexão com a sessão remota. Por exemplo, VNC.
- Servidor
O endereço IP ou DNS e o número de exibição do servidor remoto.
- Nome de usuário, senha
As credenciais que serão usadas para autenticação remota. Deixe vazio para nenhuma autenticação.
- Profundidade de cores, qualidade
Selecione as melhores opções de acordo com a velocidade e a qualidade da conexão.
Selecione a guia
para inserir configurações mais específicas.Se a comunicação entre o cliente e o servidor remoto não for criptografada, ative
; do contrário, haverá falha na conexão.Selecione a guia
para opções avançadas de autenticação e túnel SSH.Confirme com
. Seu novo perfil será listado na janela principal.14.2.4 Iniciando sessões remotas #
Você pode iniciar uma sessão que já foi gravada ou iniciar rapidamente uma sessão remota sem gravar os detalhes da conexão.
14.2.4.1 Iniciando sessões remotas rapidamente #
Para iniciar uma sessão remota rapidamente, sem adicionar e gravar os detalhes da conexão, use a caixa suspensa e a caixa de texto na parte superior da janela principal.
Selecione o protocolo de comunicação na caixa suspensa, por exemplo, “VNC”, e digite o endereço DNS ou IP do servidor VNC seguido de uma vírgula e de um número de exibição. Em seguida, pressione Enter para confirmar.
14.2.4.2 Abrindo sessões remotas gravadas #
Para abrir uma sessão remota específica, clique duas vezes nela na lista de sessões.
14.2.4.3 Janela de sessões remotas #
As sessões remotas são abertas nas guias de uma janela separada. Cada guia hospeda uma sessão. A barra de ferramentas à esquerda da janela ajuda você a gerenciar as janelas/sessões. Por exemplo, alternar para o modo de tela cheia, redimensionar a janela para corresponder ao tamanho de tela da sessão, enviar pressionamentos de tecla específicos para a sessão, fazer capturas de tela da sessão ou definir a qualidade da imagem.
14.2.5 Editando, copiando e apagando sessões gravadas #
Para editar uma sessão remota gravada, clique o botão direito do mouse no nome dela na janela principal do Remmina e selecione . Consulte a Seção 14.2.3, “Adicionando sessões remotas” para ver a descrição dos campos relevantes.
Para copiar uma sessão remota gravada, clique o botão direito do mouse no nome dela na janela principal do Remmina e selecione . Na janela , mude o nome do perfil, ajuste as opções relevantes (opcional) e clique em para confirmar.
Para apagar uma sessão remota gravada, clique o botão direito do mouse no nome dela na janela principal do Remmina e selecione . Na caixa de diálogo, clique em para confirmar.
14.2.6 Executando sessões remotas da linha de comando #
Se você precisar abrir uma sessão remota da linha de comando ou de um arquivo de lote sem primeiro abrir a janela principal do aplicativo, use a seguinte sintaxe:
>
remmina -c profile_name.remmina
Os arquivos de perfil do Remmina são armazenados no diretório .local/share/remmina/
em seu diretório pessoal. Para determinar qual arquivo de perfil pertence à sessão que você deseja abrir, execute o Remmina, clique no nome da sessão na janela principal e leia o caminho para o arquivo de perfil na linha de status da janela na parte inferior.
Enquanto o Remmina não estiver em execução, você poderá renomear o arquivo de perfil para um nome de arquivo mais apropriado, como sle15.remmina
. Você pode até copiar o arquivo de perfil para o seu diretório personalizado e executá-lo usando o comando remmina -c
nesse diretório.
14.3 Configurando sessões únicas no servidor VNC #
Uma sessão única é iniciada por um cliente remoto. Ela inicia uma tela gráfica de login no servidor. Desse modo, você pode escolher o usuário que inicia a sessão e, se suportado pelo gerenciador de login, o ambiente de área de trabalho. Quando você cancela a conexão do cliente com essa sessão VNC, todos os aplicativos iniciados nessa sessão também são terminados. Sessões VNC únicas não podem ser compartilhadas, mas é possível ter várias sessões em um único host ao mesmo tempo.
Inicie o
› › .Marque
.Ative
se você pretende acessar a sessão VNC em uma janela do browser da Web.Se necessário, marque também
(por exemplo, quando a interface de rede estiver configurada para ficar na Zona Externa). Se você tem mais de uma interface de rede, restrinja a abertura de portas no firewall a uma interface específica em .Confirme as configurações com
.Caso nem todos os pacotes necessários já estejam disponíveis, aprove a instalação dos pacotes ausentes.
Dica: Reiniciar o gerenciador de exibiçãoO YaST faz mudanças nas configurações do gerenciador de exibição. Você precisará efetuar logout da sessão gráfica atual e reiniciar o gerenciador de exibição para que as mudanças entrem em vigor.
14.3.1 Configurações disponíveis #
A configuração padrão no SUSE Linux Enterprise Desktop confere às sessões uma resolução de 1024 x 768 pixels com profundidade de cores de 16 bits. As sessões estão disponíveis nas portas 5901
para viewers VNC “regulares” (equivalente à exibição VNC 1
) e na porta 5801
para browsers da Web.
É possível disponibilizar outras configurações em portas diferentes. Peça os detalhes ao administrador do sistema, se você precisar modificar a configuração.
Os números de exibição VNC e os números de exibição X são independentes nas sessões únicas. Um número de exibição VNC é atribuído manualmente a todas as configurações suportadas pelo servidor (:1 no exemplo acima). Sempre que uma sessão VNC é iniciada com uma das configurações, ela recebe automaticamente um número de exibição X livre.
Por padrão, tanto o cliente quanto o servidor VNC tentam se comunicar de forma segura por meio de um certificado SSL autoassinado, que será gerado após a instalação. É possível usar o padrão ou substituí-lo pelo seu próprio certificado. Ao usar o certificado autoassinado, você precisa confirmar sua assinatura antes da primeira conexão, tanto no viewer do VNC quanto no browser da web.
Alguns clientes VNC se recusam a estabelecer uma conexão segura por meio do certificado autoassinado padrão. Por exemplo, o cliente do Vinagre verifica a certificação no armazenamento de confiança global do GnuTLS e emitirá uma falha se o certificado for autoassinado. Nesse caso, use um método de criptografia diferente de x509
ou gere um certificado devidamente assinado para o servidor VNC e importe-o para o armazenamento de confiança do sistema do cliente.
14.3.2 Iniciando uma sessão VNC única #
Para conectar-se a uma sessão VNC única, é necessário instalar o viewer do VNC. Consulte também a Seção 14.1, “Cliente vncviewer
”. Se preferir, use um browser da Web compatível com JavaScript para ver a sessão VNC digitando o seguinte URL: http://jupiter.example.com:5801
14.3.3 Configurando sessões VNC únicas #
Você poderá ignorar esta seção se não precisar nem desejar modificar a configuração padrão.
As sessões VNC únicas são iniciadas pelo systemd
soquete xvnc.socket
. Por padrão, ele oferece seis blocos de configuração: três para viewers do VNC (vnc1
a vnc3
) e três que atendem a um cliente JavaScript (vnchttpd1
a vnchttpd3
). Por padrão, apenas vnc1
e vnchttpd1
estão ativos.
Para ativar o soquete do servidor VNC no momento da inicialização, execute o seguinte comando:
>
sudo
systemctl enable xvnc.socket
Para iniciar o soquete imediatamente, execute:
>
sudo
systemctl start xvnc.socket
O servidor Xvnc
pode ser configurado por meio da opção server_args
. Para obter uma lista de opções, consulte Xvnc --help
.
Ao adicionar configurações padrão, certifique-se de que elas não usem portas já em uso por outras configurações, outros serviços ou sessões VNC persistentes existentes no mesmo host.
Ative as mudanças na configuração digitando o seguinte comando:
>
sudo
systemctl reload xvnc.socket
Ao ativar a Administração Remota conforme descrito no Procedimento 14.1, “Habilitando sessões VNC únicas”, as portas 5801
e 5901
são abertas no firewall. Se a interface de rede que atende às sessões VNC for protegida por firewall, será necessário abrir manualmente as respectivas portas ao ativar portas adicionais para as sessões VNC. Consulte o Chapter 23, Masquerading and firewalls para obter instruções.
14.4 Configurando sessões persistentes do servidor VNC #
É possível acessar uma sessão persistente de vários clientes ao mesmo tempo. Isso é ideal para fins de demonstração em que um cliente tem acesso total, e todos os outros têm acesso apenas exibição. Outro caso de uso são sessões de treinamento em que o instrutor pode precisar acessar a área de trabalho do aluno.
Para conectar-se a uma sessão VNC persistente, é preciso instalar o viewer do VNC. Consulte a Seção 14.1, “Cliente vncviewer
” para obter mais detalhes. Se preferir, use um browser da Web compatível com JavaScript para ver a sessão VNC digitando o seguinte URL: http://jupiter.example.com:5801
Há dois tipos de sessões VNC persistentes:
14.4.1 Sessão VNC iniciada usando vncserver
#
Esse tipo de sessão VNC persistente é iniciado no servidor. A sessão e todos os aplicativos iniciados nessa sessão são executados independentemente das conexões do cliente até a sessão ser terminada. O acesso às sessões persistentes é protegido por dois tipos de senhas possíveis:
uma senha regular que permite acesso total ou
uma senha opcional apenas exibição que permite acesso não interativo (apenas exibição).
Uma sessão pode ter várias conexões de cliente de ambos os tipos de uma só vez.
vncserver
#Abra um shell e verifique se você está conectado como o usuário proprietário da sessão VNC.
Se a interface de rede que atende às sessões VNC for protegida por firewall, será necessário abrir manualmente a porta usada pela sessão no firewall. Se você iniciar várias sessões, poderá também abrir uma faixa de portas. Consulte o Chapter 23, Masquerading and firewalls para obter os detalhes sobre como configurar o firewall.
O
vncserver
usa as portas5901
para a exibição:1
,5902
para a exibição:2
e assim por diante. Para sessões persistentes, a exibição VNC e a exibição X normalmente têm o mesmo número.Para iniciar uma sessão com resolução de 1024 x 768 pixels e profundidade de cores de 16 bits, digite o seguinte comando:
vncserver -alwaysshared -geometry 1024x768 -depth 16
O comando
vncserver
escolhe um número de exibição não usado quando nenhum número é especificado e imprime essa escolha. Consulteman 1 vncserver
para ver mais opções.
Quando o vncserver
é executado pela primeira vez, ele pede uma senha para acesso total à sessão. Se necessário, forneça também uma senha de acesso apenas exibição à sessão.
As senhas inseridas aqui também serão usadas em sessões futuras iniciadas pelo mesmo usuário. Elas podem ser modificadas com o comando vncpasswd
.
Verifique se está usando senhas avançadas de tamanho significativo (oito ou mais caracteres). Não compartilhe essas senhas.
Para cancelar a sessão, encerre o ambiente de área de trabalho executado na sessão VNC pelo viewer do VNC, da mesma forma que você encerra uma sessão X local regular.
Se preferir cancelar a sessão manualmente, abra um shell no servidor VNC e certifique-se de que você efetuou login como o usuário que possui a sessão VNC que deseja terminar. Execute o seguinte comando para cancelar a sessão em execução na exibição :1
: vncserver
-kill :1
14.4.1.1 Configurando sessões VNC persistentes #
É possível configurar as sessões VNC persistentes editando $HOME/.vnc/xstartup
. Por padrão, o script shell inicia o mesmo gerenciador de janelas/GUI do qual ele foi iniciado. No SUSE Linux Enterprise Desktop, pode ser o GNOME ou o IceWM. Para iniciar a sessão com um gerenciador de janelas de sua escolha, defina a variável WINDOWMANAGER
:
WINDOWMANAGER=gnome vncserver -geometry 1024x768 WINDOWMANAGER=icewm vncserver -geometry 1024x768
Sessões VNC persistentes são configuradas em uma única configuração por usuário. Várias sessões iniciadas pelo mesmo usuário utilizarão todos os mesmos arquivos de inicialização e senha.
14.4.2 Sessão VNC iniciada usando vncmanager
#
Inicie o
› › .Ative
.Ative
se você pretende acessar a sessão VNC em uma janela do browser da Web.Se necessário, marque também
(por exemplo, quando a interface de rede estiver configurada para ficar na Zona Externa). Se você tem mais de uma interface de rede, restrinja a abertura de portas no firewall a uma interface específica em .Confirme as configurações com
.Caso nem todos os pacotes necessários já estejam disponíveis, aprove a instalação dos pacotes ausentes.
Dica: Reiniciar o gerenciador de exibiçãoO YaST faz mudanças nas configurações do gerenciador de exibição. Você precisará efetuar logout da sessão gráfica atual e reiniciar o gerenciador de exibição para que as mudanças entrem em vigor.
14.4.2.1 Configurando sessões VNC persistentes #
Após habilitar o gerenciamento de sessões VNC conforme descrito no Procedimento 14.3, “Habilitando sessões VNC persistentes”, você poderá conectar-se normalmente ao seu viewer do VNC favorito, como vncviewer
ou Remmina. Você verá a tela de login. Depois que você efetuar login, o ícone “VNC” será exibido na bandeja do sistema do ambiente de área de trabalho. Clique no ícone para abrir a janela . Se ele não aparecer ou se o seu ambiente de área de trabalho não oferecer suporte a ícones na bandeja do sistema, execute vncmanager-controller
manualmente.
Há várias configurações que afetam o comportamento da sessão VNC:
Isso é equivalente a uma sessão única. Ela não fica visível a outros usuários e será terminada depois que você se desconectar. Consulte a Seção 14.3, “Configurando sessões únicas no servidor VNC” para obter mais informações.
A sessão fica visível a outros usuários e continuará em execução mesmo depois que você se desconectar.
Aqui você pode especificar o nome da sessão persistente para que ela seja facilmente identificada ao reconectar-se.
A sessão será livremente acessível sem necessidade de efetuar login com credenciais de usuário.
Você precisa efetuar login com um nome de usuário e uma senha válidos para acessar a sessão. Lista os nomes válidos de usuário na caixa de texto
.Impede que vários usuários ingressem na sessão ao mesmo tempo.
Permite que vários usuários ingressem na sessão persistente ao mesmo tempo. Um recurso útil para apresentações ou sessões de treinamento remotas.
Confirme com
.14.4.2.2 Ingressando em sessões VNC persistentes #
Após configurar uma sessão VNC persistente, conforme descrito na Seção 14.4.2.1, “Configurando sessões VNC persistentes”, você poderá ingressar nela com o viewer do VNC. Depois que o cliente VNC conectar-se ao servidor, será solicitado que você escolha se deseja criar uma nova sessão ou ingressar em uma existente:
Após clicar no nome da sessão existente, talvez você tenha que inserir as credenciais de login, dependendo das configurações de sessão persistente.
14.5 Configurando a criptografia no servidor VNC #
Se o servidor VNC estiver configurado apropriadamente, todas as comunicações entre o cliente e o servidor VNC serão criptografadas. A autenticação ocorre no início da sessão. A transferência real dos dados começa somente depois.
Seja para uma sessão VNC única ou persistente, as opções de segurança são configuradas por meio do parâmetro -securitytypes
do comando /usr/bin/Xvnc
localizado na linha server_args
. O parâmetro -securitytypes
seleciona tanto o método de autenticação quanto a criptografia. Ele tem as seguintes opções:
- None, TLSNone, x509None
Nenhuma autenticação.
- VncAuth, TLSVnc, x509Vnc
Autenticação com senha personalizada.
- Plain, TLSPlain, x509Plain
Autenticação que usa PAM para verificar a senha do usuário.
- None, vncAuth, plain
Sem criptografia.
- TLSNone, TLSVnc, TLSPlain
Criptografia TLS anônima. Tudo é criptografado, mas não há nenhuma verificação do host remoto. Portanto, você está protegido contra invasores passivos, mas não contra invasores man-in-the-middle.
- X509None, x509Vnc, x509Plain
Criptografia TLS com certificado. Se você usar um certificado autoassinado, será solicitado a verificá-lo na primeira conexão. Nas conexões subsequentes, você será avisado apenas se o certificado for mudado. Portanto, você está protegido contra tudo, exceto man-in-the-middle na primeira conexão (similar ao uso comum de SSH). Se você usar um certificado assinado por uma autoridade de certificação que corresponde ao nome da máquina, terá segurança total (similar ao uso comum de HTTPS).
DicaAlguns clientes VNC se recusam a estabelecer uma conexão segura por meio do certificado autoassinado padrão. Por exemplo, o cliente do Vinagre verifica a certificação no armazenamento de confiança global do GnuTLS e emitirá uma falha se o certificado for autoassinado. Nesse caso, use um método de criptografia diferente de
x509
ou gere um certificado devidamente assinado para o servidor VNC e importe-o para o armazenamento de confiança do sistema do cliente.Dica: Caminho para certificado e chaveCom a criptografia baseada em X509, você precisa especificar o caminho para o certificado X509 e a chave com as opções
-X509Cert
e-X509Key
.
Se você selecionar vários tipos de segurança separados por vírgula, o primeiro que for suportado e permitido pelo cliente e pelo servidor será utilizado. Dessa forma, você pode configurar criptografia oportunista no servidor. Isso é útil se você precisa suportar clientes VNC que não aceitam criptografia.
No cliente, você também pode especificar os tipos de segurança permitidos para impedir ataque de instalação de uma versão menos eficiente, se estiver conectando-se a um servidor que você sabe que tem a criptografia habilitada (embora nosso vncviewer o avisará com a mensagem "Conexão não criptografada!” nesse caso).
14.6 Compatibilidade com o Wayland #
O recurso Administração Remota (VNC) depende do X11 e pode resultar em uma tela vazia se o Wayland estiver habilitado. O gerenciador de exibição deve ser configurado para usar X11 em vez de Wayland. Para gdm, edite o /etc/gdm/custom.conf
. Na seção [daemon]
, adicione WaylandEnable=false
ao arquivo de configuração. Ao efetuar login, o usuário também deve escolher uma sessão compatível com X11. Para remover a opção Wayland do GNOME, você pode remover e bloquear o pacote gnome-session-wayland.