Daiane Azevedo de Fraga
Daiane Azevedo de Fraga, Software Engineer na Umbler

Acesso remoto por RDP a partir do Linux usando o FreeRDP

Podemos dizer, com certeza, que já estamos vivendo na era do trabalho remoto, e isso abre portas para infinitas possibilidades. Não podemos mais nos dar ao luxo de nos limitarmos por tecnologias. Tudo está valendo, desde que você consiga resolver o seu problema em um tempo viável e favorável para sua situação.

Então, o que esse mundo exige de nós? Quais desafios nos apresenta? O que devemos saber para viver em um mundo tão fortemente orientado à comunicação digital? Para ajudar nessas e em outras questões, a Umbler preparou uma série de posts sobre trabalho remoto:

Ok, depois desse boom maravilhoso de informações, pronto para brincar um pouco?!

Neste post da série, seguindo a onda do trabalho remoto e a explosão de tecnologias que a computação em nuvem acaba gerando para nós diariamente, vamos focar em uma situação bem comum: a conexão remota pelo protocolo RDP.

O RDP (Remote Desktop Protocol) é o principal protocolo quando o assunto é conexão remota com computadores que utilizam o sistema operacional Windows. Então, é muito comum encontrar pessoas nas empresas que se conectam em máquinas remotas Windows a partir de outras máquinas Windows, tendo em vista a implementação nativa deste protocolo. Porém, imagine que você esteja em um cenário onde precisa se conectar no Windows, mas tenha em mãos somente uma máquina com Linux? Pois não se desespere (ainda :), há uma grande chance de seu problema ser resolvido com o FreeRDP.

O FreeRDP é uma implementação do RDP sob os termos do software livre, estando licenciado pela Apache License. Seguindo as Open Specifications da Microsoft, o FreeRDP fornece uma aplicação client-side para conexões através do protocolo RDP.

Atualmente, o FreeRDP encontra-se em sua versão 2.0.0. O código fonte está versionado no GitHub.

Processo de instalação

O processo que vamos explorar aqui se mostrou compatível com a maior parte das distros (ou todas) conhecidas. Contudo, em versões mais novas ou em algumas distros mais específicas, pode ser necessário recorrer a outras documentações. Isso normalmente ocorre porque alguns pacotes podem mudar de nome ou exigir novas dependências e configurações.

Em caso de dúvidas, aconselhamos buscar a documentação oficial do FreeRDP que é fornecida pela wiki do projeto no GitHub. Os passos mostrados a seguir representam um resumo dessa documentação.

A abordagem usada aqui envolve compilar e instalar o FreeRDP através do comando make. Isso permitirá que você instale a última versão do cliente e usufrua de suas mais novas correções e features. Do contrário, ao usar gerenciadores de pacotes tais como apt ou yum, você poderá estar instalando uma versão relativamente antiga. Fique atento a isso.

Vamos ao trabalho!

  1. Você precisará usar um terminal para executar os comandos. Então, a primeira coisa é abrir um terminal. 🙂
  2. Agora, clone o repositório https://github.com/FreeRDP/FreeRDP.
  • Se você tiver configurado sua chave SSH no GitHub, use:
git clone git@github.com:FreeRDP/FreeRDP.git
  • Caso contrário, pode clonar usando o protocolo HTTPS:
git clone https://github.com/FreeRDP/FreeRDP.git
  1. Instale as dependências para a compilação e a instalação. Entretanto, fique atento a versão de seu sistema operacional, talvez novos pacotes possam ser necessários.
  • Para sistemas baseados no Debian, instale:
sudo apt-get install build-essential git-core debhelper cdbs dpkg-dev autotools-dev cmake pkg-config xmlto libssl-dev docbook-xsl xsltproc libxkbfile-dev libx11-dev libwayland-dev libxrandr-dev libxi-dev libxrender-dev libxext-dev libxinerama-dev libxfixes-dev libxcursor-dev libxv-dev libxdamage-dev libxtst-dev libcups2-dev libpcsclite-dev libasound2-dev libpulse-dev libjpeg-dev libgsm1-dev libusb-1.0–0-dev libudev-dev libdbus-glib-1-dev uuid-dev libxml2-dev libgstreamer1.0-dev libgstreamer0.10-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-base0.10-dev
  • Para sistemas baseados no RHEL (Red Hat Enterprise Linux), instale:
sudo yum install gcc cmake openssl-devel libX11-devel libXext-devel libXinerama-devel libXcursor-devel libXi-devel libXdamage-devel libXv-devel libxkbfile-devel alsa-lib-devel cups-devel ffmpeg-devel glib2-devel
  1. Após a instalação das dependências, acesse a pasta do repositório e execute o seguinte comando cmake para criar os Makefiles:
cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSE2=ON .
  1. Neste momento, você começará a compilação. Para tanto, execute (isso pode levar alguns minutos):
make 
  1. Verifique se a compilação foi bem sucedida. Se sim, prossiga para a instalação (você precisará de permissões administrativas):
sudo make install
  1. Dependendo do sistema e de suas configurações, pode ser necessário que você tenha que recarregar o PATH em sua sessão ativa do terminal. Você também pode reiniciar o terminal ou abrir uma nova sessão.
  2. Você pode verificar se o FreeRDP foi instalado corretamente executando o comando:
xfreerdp

Ao executar esse comando, a saída deve ser as instruções de uso (help).

Utilizando o FreeRDP

A linha de comando que você irá utilizar para acessar o computador remoto vai depender muito das configurações dessa máquina e da rede onde ela está situada. Mas, na maior parte dos casos, o comando a seguir é suficiente:

xfreerdp /v:<hosname> /d:<domain> /u:<username>

Onde:

/v: nome do host que será acessado 
/d: domínio do host
/u: usuário para se autenticar no host
  • Outras opções úteis são:
/g: hostname do gateway
/gd: domínio do gateway
/gu: nome de usuário para se autenticar no gateway
/f: fullscreen (atalho para sair e retomar fullscreen é Ctrl + Alt + Enter)

As senhas de acesso são solicitadas através do próprio terminal.

  • Se você precisa passar por um gateway até chegar na máquina que precisa acessar, uma linha de comando possível seria:

xfreerdp /v:hostname /d:algum-domínio /u:usuário /g:gateway-hostname /gd:gateway-algum-domínio /gu:usuário-do-gateway /f

Feito!

Observações finais

Por favor, antes de se desesperar porque as coisas não funcionaram totalmente bem, dê uma pesquisada no Google. 🙂

Em versões muito novas de algumas distros, pode ser necessário adaptar um pouco estes passos. Por exemplo, no Ubuntu 18.04, é preciso instalar alguns pacotes diferentes. Veja mais a respeito em Compile on Ubuntu 18.04.

Este conteúdo foi útil para você? Quer ver mais posts como este aqui no blog? Deixe seu comentário e suas sugestões!

Daiane Azevedo de Fraga
Daiane Azevedo de Fraga, Software Engineer na Umbler