AutoSSH – Configuração de Conexões SSH Persistentes

Actualmente, muitos profissionais de TI necessitam de se conectar a servidores remotamente, utilizando túneis SSH para garantir a segurança dessas conexões. No entanto, a instabilidade da rede pode causar interrupções. O Autossh surge como uma solução, assegurando que a conexão SSH se mantenha activa, mesmo em caso de falhas temporárias da rede.

Por exemplo, considere um cenário em que está a trabalhar a partir de casa e necessita de se conectar a um servidor no escritório. Se houver problemas na internet da sua residência, a conexão SSH pode ser interrompida. O Autossh irá automaticamente restabelecer a conexão caso isso ocorra.

Neste artigo, apresentamos um guia passo a passo para instalar e configurar o Autossh num computador com Linux, garantindo a estabilidade e fiabilidade das suas conexões SSH.

Passo 1: Instalação do Autossh

Os pacotes Autossh estão disponíveis nos repositórios padrão de vários sistemas Linux populares, como Redhat, Ubuntu e Debian. Para proceder à instalação, faça login no seu sistema e utilize o gestor de pacotes correspondente.

Sistemas baseados em RHEL:

Bash
sudo yum install autossh

Sistemas baseados em Debian:

Bash
sudo apt install autossh

Passo 2: Criação de um Túnel SSH

Antes de utilizar o Autossh, é necessário criar um túnel SSH para um servidor remoto. Neste exemplo, iremos criar um túnel que encaminha a porta local 80 para a porta 8000 no servidor remoto. Isto permitirá aceder a uma aplicação em execução no servidor na porta 8000 directamente através do localhost no navegador.

Para criar o túnel, abra um terminal e execute o seguinte comando:

Bash
ssh -L 80:localhost:8000 remote-user@remote-server

Este comando estabelecerá uma conexão SSH com o servidor remoto e criará um túnel que encaminha o tráfego da porta 80 na sua máquina local para a porta 8000 no servidor remoto.

Depois de estabelecer o túnel SSH, pode testá-lo abrindo um navegador web e navegando para http://localhost. Se tudo estiver configurado correctamente, deverá ver a página web padrão do servidor remoto.

Passo 3: Utilização do Autossh para Gerir o Túnel SSH

Com o túnel SSH activo e funcional, podemos usar o Autossh para reiniciar automaticamente o túnel em caso de desconexão ou interrupção.

Para usar o Autossh, é necessário modificar o comando SSH usado para criar o túnel. Aqui está um exemplo:

Bash
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -f -L 80:localhost:8000 remote-user@remote-server

Este comando é semelhante ao comando SSH anterior, mas inclui opções adicionais para permitir que o Autossh gerencie o túnel.

  • A opção -M 0 indica ao Autossh para usar uma porta interna para verificar se o túnel SSH ainda está conectado.
  • As opções -o "ServerAliveInterval 30" e -o "ServerAliveCountMax 3" instruem o Autossh a enviar um sinal a cada 30 segundos para manter a conexão activa. Se três sinais consecutivos falharem, o Autossh tentará reconectar.
  • As opções -N -f instruem o SSH a criar o túnel em segundo plano, sem executar quaisquer comandos remotos.

Passo 4: Verificação do Autossh

Para testar o Autossh, desconecte a sua internet ou interrompa o túnel SSH manualmente pressionando CTRL + C. O Autossh deverá detectar que o túnel foi desconectado e reiniciá-lo automaticamente.

Pode verificar se o túnel foi reiniciado navegando para http://localhost no seu navegador web.

Passo 5: Automatização do Autossh

Para garantir que o Autossh inicie automaticamente quando o servidor arrancar, é necessário criar um serviço systemd.

Crie um novo ficheiro chamado autossh.service no directório /etc/systemd/system usando o seguinte comando:

Bash
sudo nano /etc/systemd/system/autossh.service

Adicione o seguinte conteúdo ao ficheiro:

Bash
[Unit]
Description=Autossh Service
After=network.target

[Service]
User=<username>
ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -N -f -L 8080:localhost:80 remote-user@remote-server
Restart=always
RestartSec=10s

[Install]
WantedBy=multi-user.target

Substitua <username> pelo nome do utilizador que deverá executar o serviço Autossh, tipicamente o mesmo que criou o túnel SSH.

Guarde e feche o ficheiro.

Em seguida, recarregue o systemd e inicie o serviço Autossh com os seguintes comandos:

Bash
sudo systemctl daemon-reload
sudo systemctl start autossh.service

Também active o serviço Autossh para iniciar automaticamente ao arrancar o sistema:

Bash
sudo systemctl enable autossh.service

Conclusão

O Autossh é uma ferramenta valiosa para manter conexões SSH activas, especialmente em redes instáveis. Com o Autossh, não precisa de se preocupar com a perda da conexão SSH em caso de falhas na rede. Seguindo os passos deste artigo, pode instalar e configurar o Autossh no seu servidor Linux, garantindo que os seus túneis SSH permaneçam activos e operacionais mesmo em caso de interrupções na rede. O Autossh reconectará automaticamente, permitindo que continue o seu trabalho sem interrupções.

Artigos Relacionados