Acesso Remoto RDP e SSH com Apache Guacamole (Ubuntu 22.04 e 23.10)

Apache Guacamole é um aplicativo de desktop remoto poderoso e sem cliente que permite acessar máquinas e servidores remotos usando um navegador da web. Ele oferece suporte a protocolos populares como VNC, RDP e SSH e utiliza HTML5 para conexões remotas perfeitas. Neste tutorial fiz o processo de instalação do Apache Guacamole como um contêiner Docker no Ubuntu 23.10, ele funciona também no Ubuntu 22.04 LTS.

Para iniciar a instalação, é recomendado que você tenha a última versão do Docker instalado no seu servidor.

Vamos iniciar instalando as dependências necessárias.

apt install ca-certificates curl gnupg lsb-release -y

Adicione a chave GPG e o repositório do docker.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor > /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

Atualize os repositórios e instale o Docker Engine.

apt update -y
apt install docker-ce docker-ce-cli containerd.io -y

Você vai precisar também do Docker Compose

curl -sL "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

Agora vamos fazer o download das imagens do Guacamole Client e Server do Docker Registry.

Download da imagem do Guacamole Server

docker pull guacamole/guacd

Download da imagem do Guacamole Client

docker pull guacamole/guacamole

Verifique as imagens que foram baixadas

docker images

Iniciando o Container do Apache Guacamole MySQL

Faça o download e inicie o container.

docker run --name guacamoledb -e MYSQL_ROOT_PASSWORD=meu_password -e MYSQL_DATABASE=guacdb -d mysql/mysql-server

Crie a pasta para armazenar o MySQL

mkdir -p /opt/guacamole/mysql

Gere o script de inicialização.

docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql > /opt/guacamole/mysql/01-initdb.sql

Copie o script de inicialização do MySQL para o container Docker MySQL.

docker cp /opt/guacamole/mysql/01-initdb.sql guacamoledb:/docker-entrypoint-initdb.d

Conecte no banco MySQL dentro do container.

docker exec -it guacamoledb bash

Liste o script fr inicialização MySQL.

cd /docker-entrypoint-initdb.d/
ls

Você deverá ver o arquivo 01-initdb.sql listado.

Conecte na console do MySQL.

mysql -u root -p

Mude para o banco guacdb e inicialize o banco do Guacamole.

use guacdb;
source 01-initdb.sql;

Verifique todas as tabelas, se foram criadas.

show tables;

As tabelas serão listadas como abaixo.

Crie o usuário do banco e atribua a senha e as permissões.

create user guacadmin@'%' identified by 'password@111';
grant SELECT,UPDATE,INSERT,DELETE on guacdb.* to guacadmin@'%';
flush privileges;
exit;

Saia de dentro do contianer MySQL.

exit

Verifique se o container está executando

docker ps

Você verá um resultado como abaixo.

Inicie o container do Guacamole Server

docker run --name guacamole-server -d guacamole/guacd

Veja os resultados no log

docker logs --tail 10 guacamole-server

Verifique se o container está executando.

docker ps

Inicie o container do Guacamole Client.

docker run --name guacamole-client --link guacamole-server:guacd --link guacamoledb:mysql -e MYSQL_DATABASE=guacdb -e MYSQL_USER=guacadmin -e MYSQL_PASSWORD=password@111 -d -p 9090:8080 guacamole/guacamole

Verifique se o conatiner está executando.

docker ps

Acessando o Dashboard do Apache Guacamole

http://ip-do-seu-servidor:9090/guacamole

Usuário: guacadmin
Senha: guacadmin


Dentro do Guacamole, clique no usuário no canto direito superior, e vá em Settings.

A partir de então você já pode personalizar as configurações de idioma, fuso horário, alterar a senha.

Para criar um acesso RDP, clique em Conexões, Nova Conexão. Preencha com os dados conforme abaixo, Colocando o nome do PC, Grupo e Protocolo (no caso RDP).

Defina as configurações do servidor conforme abaixo, marque a opção “Ignorar certificado do servidor” para evitar erros de conexão.

Eu costumo desabilitar o áudio, pois evita problemas de perda de conexão em algumas versões e lentidão.

Em seguida salve a conexão, vá no seu usuário e client em Home, em seguida clique no seu servidor da conexão remota.

Pronto, sua conexão remota já está funcionando.

Para criar uma conexão Linux, o processo é da mesma maneira, selecionando o protocolo SSH.

Em seguida preencha com as informações do seu servidor.

Vá para Home e clique na sua conexão do servidor.

Pronto, seu servidor já está acessível pelo Guacamole.

Recomendo ativar protocolos de usuários e senhas complexos para manter seu acesso seguro.

Rolar para cima