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:
sudo yum install autossh
Sistemas baseados em Debian:
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:
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:
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:
sudo nano /etc/systemd/system/autossh.service
Adicione o seguinte conteúdo ao ficheiro:
[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:
sudo systemctl daemon-reload
sudo systemctl start autossh.service
Também active o serviço Autossh para iniciar automaticamente ao arrancar o sistema:
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.