Galera,
Nestes dias precisei além de acessar alguns servidores Linux via SSH mas também com necessidade de ir um pouco além, ou seja, com suporte também ao ambiente gráfico.
Fiz algumas pesquisas e a melhor solução foi a utilização do servidor XRDP que torna o acesso pelo Windows de foram nativa.
Achei este Tuto na net e gostaria de compartilhar com vocês, pois facilita muita nossa vida para administrar algumas coisas, sei que todos nós gostamos de tela preta, isso não há dúvida, porém quando queremos algo rápido e com reporte de telas ou outros, isso facilita muito.
OBS: Testado nas distribuições que parte do Debian
Vamos lá....
Para
utilizar o acesso remoto ao seu computador, instale o pacote xrdp que é
o equivalente ao servidor RDP (Remote Desktop Protocol) do Windows.
O funcionamento do xrdp é bem parecido com o do vnc com pequenas diferenças.
Neste
artigo o acesso remoto será feito somente usando os programas nativos
padrões do GNU/Linux e Windows sem a utilização de programas de
terceiros ou seja de outras origens.
Para instalar nas distro que utilizam o apt-get faça:
# apt-get install xrdp (servidor xrdp)
# apt-get install tightvncserver (servidor vnc)
# apt-get install rdesktop (cliente para acessar o servidor xrdp ou RDS do Windows)
Notas gerais:
Para o xrdp funcionar é necessário ter um servidor vnc instalado pois o mesmo é necessário (tightvncserver).
O pacote do xrdp contém libs que parte do nome do arquivo contém vnc.
Ao
instalar o pacote xrdp automaticamente o servidor será ativado na
sessão atual é carregando em todos os boots automaticamente.
Ao fazer a listagem dos processos, os comandos relativos ao xrdp que iniciam sempre junto com o sistema são:
$ ps xa | grep xrdp
1259 ? S 0:00 /usr/sbin/xrdp
1264 ? S 0:00 /usr/sbin/xrdp-sesman
Sendo
que o servidor Xvnc somente será carregado quando um micro cliente for
conectar ao seu usando o cliente rdesktop (Linux) ou o cliente RDP do
Windows.
Para
que um micro remotamente possa conectar ao seu servidor xrdp deverá
usar o cliente rdesktop (Linux) ou o cliente RDP do Windows e
especificar o hostname ou IP do seu computador para fazer a conexão.
Exemplo:
$ rdesktop mesa ou rdesktop 192.168.1.100
Diferente
de um acesso direto ao servidor vnc, embora que o xrdp faça uso do
serviço vnc, o seu funcionamento é mais prático não precisando
especificar a instância do servidor xrdp após o nome de host ou IP, e
não precisando de um arquivo ~/.vnc/xstartup a ser configurado para
carregar o gerenciador de janelas padrão do seu sistema.
A senha de acesso ao computador remoto é gravada no arquivo ~/.vnc/sesman_usuário_passwd (criptografada).
Assim
como o vnc do Linux, você pode acessar o seu próprio computador pelo
xrdp, sem precisar de outro computador para fazer testes ou simplesmente
conhecer o funcionamento, pois o comportamento será idético como se
fosse a partir de outro computador.
Na
foto abaixo um computador da rede local, quer fazer acesso a um
computador de nome mesa que está rodando o servidor xrdp, sendo
apresentado um caixa de autenticação do xrdp devendo fornecer um nome de
usuário do login do sistema e a senha do mesmo, para poder controlar o
computador remotamente.
O
xrdp usa um tipo de modulo que ativa um servidor vnc ao carregar o
comando acima e cria o arquivo de senha sesman_nando_passwd na pasta
padrão do vnc quando o micro remoto fizer login no seu na pasta
~/.vnc/sesman_nando_passwd.
Parte da saída do comando ps xa do computador Linux ao ser controlado remotamente.
1915
? S 0:31 Xvnc :10 -geometry 800x600 -depth 24 -rfbauth
/home/nando/.vnc/sesman_nando_passwd -bs -ac -nolisten tcp
Por padrão o servidor Xvnc inicia com uma tela de 800x600 e 24 bits de cores.
Assim
como no acesso direto pelo vnc o desktop Linux não é visto em tempo
real e as aplicações que já estavam abertas ou forem abertas pelo
usuário do computador controlado, não será visto em tempo real na janela
para quem controla e nem o usuário deste verá as aplicações abertas
remotamente. Caso o usuário do micro controlado, desconfiar de algo ele
pode abrir uma janela de terminal e executar o comando ps xa no qual ele
verá que estão abertas aplicações que ele não consegue ver na tela e
que não foram executadas por ele.
Parando, resertando ou iniciado o servidor xrdp no ubuntu
# service xrdp stop
# service xrdp restart
# service xrdp start
Quando
você parar o servidor xrdp, se alguém já tinha iniciado ou feito um
acesso ao seu computador o servidor Xvnc continuar ativo, pois ele é
separado do xrdp.
Especificando um tamanho de janela para o rdesktop
$ rdesktop -5 -a 16 -g 1024x768 mesa
Onde
-5 é a versão do protocolo e -a 16 especifica os bits de cor, -g
1024x768 a resolução desejada da janela remota e mesa o nome de host do
micro remoto.
Especificando para usar fullscreen
$ rdesktop -f mesa
Para sair do rdesktop, basta escolher a opção sair do gerenciador de janela que está sendo executado dentro do rdesktop.
Desativando o carregamento automático do servidor xrdp no boot
Nas distros baseadas em ubuntu em /etc/init.d basta retirar a permissão x do arquivo xrdp.
# chmod -x xrdp
Na próxima inicialização o servidor xrdp não mais será executado automaticamente no boot.
Como carregar windows managens simples diferente do padrão do seu sistema ?
No
Xubuntu, o desktop padrão é o xfce4, e caso você instalar o Window
Maker e prefira sempre usar o mesmo, não mais utilizando o desktop
xfce4, o desktop exibido será sempre o do xfce4 na sessão remota do
xrdp, pois este é o padrão do sistema.
Solução para exibir o desktop do Window Maker no xrdp
Na pasta /etc/xrdp crie o link ln -s /usr/bin/wmaker
Onde
/usr/bin/wmaker é a localização do executável do Window Maker, podendo
em outras distros ou pacotes copilados ser diferente a localização do
mesmo.
Agora você deve editar o arquivo /etc/xrdp/sesman.ini
Altere as linhas UserWindowManager e DefaultWindowManager que utilizam por padrão o startwm.sh por wmaker ou pelo nome do executável que lança o seu gerenciador de janelas preferido.
Você deve parar a sessão atual do servidor xrdp e depois executar novamente para entrar em efeito as novas configurações.
# cat sesman.ini (conteúdo parcial)
[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=1
UserWindowManager=wmaker
DefaultWindowManager=wmaker
O
mesmo procedimento também deve ser feito se você usar o fluxbox ou
outros windows managens simples que necessita apenas de um único arquivo
para inicializar todo o desktop por completo (esta dica pode não
funcionar com o xfce4 nas distros baseadas no Slackware, pois são
necessários vários comandos do xfce4 a ser executados para deixar
funcional o desktop do xfce4, caso seja especificando somente o
executável principal deste gerenciador de janela, pois é utilizado outro
método pra inicialização padrão do gestor de janela nesta distro).
Neste caso uma solução que não testei seria criar um script com todos os
comandos do xfce4 necessários para executar o gerenciador de janela,
criar o link para o script e nas linhas UserWindowManager e
DefaultWindowManager colocar o nome deste script.
Testado no xubuntu 12.10.
Como o xrdp sabe qual é o gerenciador padrão do sistema ?
No arquivo /etc/xrdp/startwm.sh tem a linha /etc/X11/Xsession que diz para utilizar o arquivo
/etc/X11/Xsession
que está localizado em /etc/X11 e sendo este arquivo é o que executa o
ambiente gráfico padrão da instalação do sistema. Para outros windows
managens instalado mais tarde, os mesmos não substituir o padrão do
sistema, podendo apenas você escolher no momento do seu login qual você
deseja utilizar, sendo sempre salvo automaticamente o último gerenciador
usado ao desligar o computador.
Testado no xubuntu 12.10.
Firewall com RDP
Para
obter o acesso remoto, é necessário liberar a porta 3389 (TCP e alguns
casos pode ser necessário também abrir a porta UDP) caso as mesmas
estejam bloqueadas com isso é preciso configurar as regras do Firewall
do Linux (Iptables).
Regra pra abrir a porta do servidor xrdp diretamente com o iptables
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -j ACCEPT
Ao abrir somente a porta tcp 3389 o acesso remoto já funciona perfeitamente.
Para quem usa o ufw use:
# ufw allow proto tcp from 192.168.1.0/24 to any port 3389
Caso
o firewall esteja ativo e se não foi aberta a porta tcp 3389 ao tentar
se conectar com o servidor remoto xrdp será retornado o erro abaixo.
$ rdesktop 192.168.1.101
Autoselected keyboard map pt-br
ERROR: 192.168.1.101: unable to connect (leva uns 35 segundos até vir o retorno de erro)
Quando a porta 3389 está liberada no firewall ou o mesmo está desativado, a tela de login para conexão remota aparece instantaneamente.
Outras
No micro mesa ao liberar a porta para acesso xrdp
# iptables -L (resultado parcial da saída do comando)
Chain INPUT (policy DROP)
target prot opt source destination
ufw-before-logging-input all -- anywhere anywhere
ufw-before-input all -- anywhere anywhere
ufw-after-input all -- anywhere anywhere
ufw-after-logging-input all -- anywhere anywhere
ufw-reject-input all -- anywhere anywhere
ufw-track-input all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:3389
Caso
o servidor xrdp estiver rodando no micro mesa, mas porta tcp 3389
estiver fechada, o serviço do xrdp não será listado no scan do nmap
feito remotamente, devido que a porta está fechada (a exibição ou não do
resultado do scan remoto dependerá das regras do firewall ativas do
micro remoto).
# nmap -sT mesa
Starting Nmap 6.00 ( http://nmap.org ) at 2013-03-26 22:32 BRT
Nmap scan report for mesa (192.168.1.101)
Host is up (0.0087s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
MAC Address: 00:25:22:67:4E:80 (ASRock Incorporation)
Nmap done: 1 IP address (1 host up) scanned in 4.75 seconds
Teste de um micro Linux controlado um computador com Windows XP
Computador
com Windows XP Profissional ou superiores podem acessar computadores
Linux normalmente que utiliza o xrdp, visualizando todo o desktop do
mesmo.
O
rdesktop também pode acessar desktop remoto nativo do Windows XP ou
superiores, pois o mesmo é compatível com o RDS do Windows.
Quando
o acesso for feito ao Windows XP, o usuário que tiver logrado no
sistema será deslogrado neste instante, indo para a tela de logon do
micro e caso o usuário do XP for o refazer o seu logon a conexão remota
cairá, devendo esperar que a conexão remota termine primeiro antes de
refazer o seu logon.
A
visualização do desktop do Windows XP é em tempo real, mesmo o usuário
sendo deslogrado do desktop e indo para tela de logon, os programas que
estavam abertos, continuarão abertos e serão visto remotamente na
janela do rdesktop sabendo assim o que este usuário estava fazendo e
após você fechar a conexão remota, se você não finalizou os programas
que foram abertos remotamente, eles estão disponíveis assim que o
usuário local refazer seu login.
Uma limitação do remoto desktop do XP é que o mesmo não suporta 24 bits sendo apenas 16 bits
O
acesso ao micro com XP é executado em tela cheia pois é o padrão do
servidor RDS do Windows, mas deslocando o mouse sob a parte superior da
tela, ira aparecer uma pequena barra de títulos no topo com os botões
das janelas, podendo minimizar a mesma, ou desativar o auto ocultar
barra de título da janela.
Ativando o serviço de Desktop Remoto no Windows
Somente
versões do Windows XP Profissional ou superiores possuem o serviço. As
versões Home, Starter ou Basic não trazem o servidor RDS.
Como ativar o RDS Windows XP
No
Windows XP Profissional com SP3, no Menu Iniciar, clique com o botão
direito do mouse em Meu Computador e escolha Propriedades, acesse a guia
Remoto.
Também pode ser feito em Meu Computador, escolha Exibir informações do Sistema.
Na
guia "Remoto" marque "Permitir que usuários se conectem remotamente a
este computador". Clique no botão "Selecionar usuários remotos", depois
em "Adicionar", escreva o nome de algum usuário cadastrado no XP e OK
para encerrar, pronto. O usuário selecionado deverá possuir uma senha no
sistema, senão não será aceito.
Usando o cliente do Windows XP para conectar a um computador com o serviço RDS ativo
Você
pode usar o cliente RDP do Windows para conectar a qualquer outro
computador Windows que estiver rodando o servidor RDS ou computadores
Linux com o xrdp.
Menu Iniciar/Acessórios/Conexão de Área de Trabalho ou digitando diretamente na caixa Executar... o nome do programa mstsc.
Telas de um computador Linux acessando um computador Windows XP com RDS ativo
Será apresentada a caixa de autenticação do Windows XP para o acesso ao RDS
Nesta tela o computador Linux está controlando remotamente o computador Windows XP que usa um tema no estilo Windows 7.
Um
detalhe é quando o acesso é feito ao Windows XP o usuário que estiver
logrado no sistema automaticamente será desconectado, indo para tela de
login quando o acesso remoto for aceito, independente se é ou não o
usuário especificado do acesso, mas o desktop estará disponível para ser
controlado remotamente assim mesmo. Caso o usuário do micro remoto faça
o seu logon no Windows XP, o acesso remoto será desconectado.
Na
tela abaixo, o acesso remoto foi feito especificando o usuário nando,
mas que estava logrado no sistema era o usuário sonia, então surge esta
mensagem de logon, mas a mesma mensagem não irá surgir quando for
especificando o usuário nando e o mesmo estiver logrado no sistema,
apesar de que ele será desconectado também quando a conexão remota for
iniciada.
Computador XP controlando computador Linux
O
cliente RDP do Windows XP, inicia sempre em fullscreen e para exibir
uma pequena barra de títulos que se oculta automaticamente no meio do
topo da tela é só deslocar o mouse para esta posição, podendo minimizar,
restaurar a janela ou fechar a mesma.
Se
você inseriu um pendrive no computador Linux e no cliente Windows para
acessar o pendrive, você deverá se autenticar na caixa de janela que irá
surgir assim que você clicar no ponto de montagem pelo gerenciador de
arquivos gráfico usando a senha de administrador do sistema Linux
(valido somente para desktop kde, gnome, xfce4, unity que são integrados
ao udev).
Ao colocar uma mídia de DVD no drive de dvd, também deverá fazer a autenticação.
Já para imprimir um arquivo remotamente não é necessário fazer a autenticação.
Nota:
Uma
vez que alguém já tenha acessado o seu computador remotamente usando um
cliente RDP seja um computador Linux ou Windows, como o servidor Xvnc é
executado no seu micro e sendo a conexão remota RDP encerrado, o
servidor Xvnc continuará ativo, então a partir de qualquer micro da rede
poderá ser conectar ao seu usando o cliente vncviewer para isto e deste
que digite a senha de acesso do vnc e que existia o arquivo
./vnc/passwd
Diferente
de uma conexão somente com o servidor vnc, o número da instancia do
servidor Xvnc comandado pelo xrdp não começa com 1 neste caso e sim a
partir do 10, sendo 11, 12... e assim sucessivamente para outros acessos
realizados remotamente via RDP ao seu micro, pois cada acesso executa
um novo processo do Xvnc. Neste caso especifico o acesso pelo vncviewer
será como padrão em fullscreen e não precisa existir o arquivo
~/.vnc/xstartup para exibir o desktop remotamente (somente para desktop
integrados ao udev, kde, gnome, xfce4 e unity).
Saída parcial do comando ps xa | grep vnc ao ser executado o servidor Xvnc devido ao acesso RDP
22391
? S 1:07 Xvnc :10 -geometry 1280x800 -depth 16 -rfbauth
/home/nando/.vnc/sesman_nando_passwd -bs -ac -nolisten tcp
Neste
exemplo de cima o acesso ao computador Linux foi feito em um notebook
com Windows XP que usa como padrão o fullscreen utilizando a mesma
resolução de tela padrão configurada no sistema, já quando for o Linux
acessando o padrão será sempre 800x600 a janela do rdesktop.
Ativando o RDS no Windows 7
Menu Iniciar “Painel de Controle/Sistema e segurança/Sistema" (ou clique com o botão direito em Meu computador e vá em Propriedades). Clique, no canto superior esquerdo da tela, em "Configurações remotas" e em "Assistência Remota" clique em "Permitir conexões de Assistência Remota para este computador". Abaixo, em "Área de trabalho remota" escolha, "Permitir conexões de computadores que estejam executando qualquer versão da Área de trabalho remota". Clique no botão "Selecionar usuário" para definir quais usuários do computador e pronto.
Usando o cliente RDP
Menu
Iniciar/Acessórios/Conexão de Área de Trabalho Remota ou digitando
diretamente na caixa Executar... o nome do programa mstsc.
Cliente RDP do Windows 7 acessando um computador XP ou Linux
Quando
o Windows 7 for acessar um computador remoto se o mesmo for uma versão
antiga do Windows ou um computador Linux será exibido a seguinte aviso
abaixo.
Apenas clique em Sim para continuar, logo a seguir virá a janela de autenticação do micro remoto e pronto.
Usando
o cliente RDP do Windows 7 para conectar em um computador XP, o usuário
que estiver ativo será deslogrado do sistema também assim como acontece
com o rdesktop com o XP indo para a tela de logon de usuário, mas o
desktop será visualizado e acessado normalmente. O usuário do Windows XP
não pode fazer logon agora, pois se o fizer a conexão remota cairá.
No
Windows 7 que está controlado o computador com XP, o padrão do cliente
RDP é em fullscreen e para exibir uma pequena barra de títulos que se
oculta automaticamente no meio do topo da tela é só deslocar o mouse
para esta posição, podendo minimizar a janela, restaurar ou fechar a
mesma.
No GNU/Linux o cliente "rdesktop" suporta todas as versões de servidores RDS, incluindo XP/Windows 7 e 8 os quais foram utilizados nos testes.
Exemplo da linha de comando: rdesktop -5 -a 16 -g 1024x768 192.168.1.103
A máquina que será acessada não pode ter um firewall bloqueando o RDS.
Acesso remoto ao Windows 7
Utilizando
o acesso remoto ao Windows 7 sendo utilizando o servidor RDS padrão
quando um outro micro seja Windows ou Linux se conectar ao mesmo,
automaticamente o usuário que tiver logrado será jogado na tela de logon
do Windows, não devendo este usuário refazer o seu logon até que seja
permitido para não cair a conexão remota, devendo esperar que quem está
controlando remotamente desative a conexão remota primeiro.
Na tela de logon remota será exibido:
Nando
Conectado remotamente de netbook
Onde
nando é o usuário remoto que está controlando o computador com Windows 7
remotamente, devendo existir este usuário cadastrado no Windows 7 para
funcionar o acesso remoto e netbook é o nome do computador remoto que
nando está usando para controlar o Windows 7.
Ativando o RDS do Windows 8
Ir e Meu computador e com o botão direito do mouse clique em Propriedades e na janela Sistema clique em Configurações remotas.
Neste
instante irá aparece uma nova janela de autenticação com os usuários
cadastrado do sistema, devendo escolher um usuário que tenha poder de
administrador do sistema para ganhar acesso root e após surgirá a janela
abaixo.
A opção Permitir
conexões somente de computadores que esteja executando a Área de
Trabalho Remoto com Autenticação no Nível de Rede (recomendável) deve está desmarcada para o acesso remoto funcionar, pelo menos com o uso do rdesktop que foi utilizando no teste.
Clique em Aplicar e depois em OK.
Ao fazer acesso remoto ao Windows 8 será apresentado a seguinte tela antes da autenticação.
Apenas clique em Ok, e escolha ou digite o nome do usuário desejado com poder de administrador do Windows 8.