Introdução ao SSH: configuração de acesso remoto, uso de chaves
1. O que é SSH?
Imagina que você está em uma ponta do planeta, e o servidor que você precisa configurar está na outra ponta. Trabalhar como aquele técnico de TI da escola, correndo de sala em sala, definitivamente não é o que queremos. Felizmente, temos o SSH (Secure SHell), uma ferramenta para gerenciar servidores remotamente.
SSH é um protocolo de rede que permite conexões seguras com computadores remotos. A conexão acontece usando criptografia, o que significa que os dados transmitidos estão protegidos de olhares curiosos. O SSH substitui métodos antigos como o Telnet, que transmitia dados de forma aberta (tipo aquele cartão postal dos Correios).
Vantagens do SSH
- Segurança. O SSH usa criptografia, protegendo os dados contra interceptações.
- Flexibilidade. Gerenciamento remoto de servidores, transferência de arquivos, criação de túneis — tudo isso disponível via SSH.
- Compatibilidade entre plataformas. Funciona em Linux, Windows (incluindo no WSL) e MacOS.
Agora que você já entende por que o SSH é importante, vamos para a prática.
2. Instalando o cliente SSH
Vamos começar pelo cliente, que vai permitir conectar ao servidor. Se você usa uma distribuição moderna do Linux, o cliente SSH provavelmente já está instalado. Vamos verificar:
ssh -V
Você deve ver informações sobre a versão do cliente SSH. Se o comando não for encontrado, instale ele (no Ubuntu e em outras distribuições baseadas no Debian):
sudo apt update
sudo apt install openssh-client
No MacOS, o cliente SSH já vem instalado, e se você estiver usando WSL, a instalação é semelhante ao Linux.
3. Conectando ao servidor remoto via SSH
A conexão ao servidor é feita com o comando:
ssh username@hostname
username
— é o nome de usuário no servidor remoto.hostname
— é o endereço IP ou domínio do servidor.
Exemplo de conexão:
ssh student@192.168.1.10
Se tudo estiver configurado certinho, o sistema vai pedir a senha. Depois de inserir a senha, você estará no console remoto do servidor. Parabéns, você está a meio caminho de virar um "operador de vilão em filme de hackers".
4. Instalando e Configurando o Servidor SSH
Instalando o Servidor SSH
Se você está trabalhando em um servidor ou máquina local para a qual quer se conectar, precisa instalar o servidor SSH. No Ubuntu, faça assim:
sudo apt update
sudo apt install openssh-server
Verifique o status do serviço SSH:
sudo systemctl status ssh
Você deve ver uma mensagem como active (running)
. Se o servidor não estiver rodando, use:
sudo systemctl start ssh
sudo systemctl enable ssh
Agora o servidor SSH está pronto para aceitar conexões.
Configurando o Servidor SSH
O arquivo principal de configuração do servidor SSH é /etc/ssh/sshd_config
. Para editá-lo, use qualquer editor de texto, como nano
:
sudo nano /etc/ssh/sshd_config
Preste atenção nos seguintes parâmetros:
Port 22
— porta onde o SSH opera.PermitRootLogin no
— nega conexão para o root (recomendado manterno
por questões de segurança).PasswordAuthentication yes
— permite conexão por senha.
Depois de alterar os parâmetros, reinicie o servidor SSH:
sudo systemctl restart ssh
5. Usando autenticação por chave
Conexão por senha é prática, mas não é segura. A melhor opção é usar chaves SSH.
Gerar chaves SSH
Na máquina cliente, rode o comando:
ssh-keygen
O script vai pedir um caminho para salvar a chave (padrão é ~/.ssh/id_rsa
). Dá pra apertar Enter para aceitar. Depois ele vai perguntar pela frase de senha. Melhor deixar vazio pra simplificar (mas não é tão seguro).
Depois de rodar o comando, os arquivos das chaves serão criados:
id_rsa
— chave privada (não compartilhe isso, como o código-fonte do seu projeto antes de lançar, especialmente se estiver cheio de "dívidas").id_rsa.pub
— chave pública (essa pode ser usada pra conexão).
Enviar a chave para o servidor
Use o comando ssh-copy-id
para enviar a chave pública para o servidor:
ssh-copy-id username@hostname
Isso vai adicionar sua chave pública no arquivo ~/.ssh/authorized_keys
no servidor. Agora você consegue se conectar sem senha.
Tente:
ssh username@hostname
Se tudo deu certo, não vão pedir senha. Sua vida oficialmente ficou um pouco mais fácil.
SSH e WSL
Se você estiver no Windows usando o WSL, dá pra usar SSH também. Abra o terminal do WSL e instale o cliente SSH:
sudo apt update
sudo apt install openssh-client
Os passos seguintes são os mesmos do Linux.
6. Parte prática: configurando o SSH no localhost
Pra praticar, você pode configurar uma conexão SSH entre duas máquinas na mesma rede ou até no seu próprio computador (usando localhost
como endereço).
- Instale o servidor e o cliente SSH na mesma máquina.
- Conecte-se pelo endereço local:
ssh seu_usuario@localhost
- Configure a conexão por chave, como foi mostrado acima.
No final, a conexão deve ser feita sem precisar digitar a senha.
7. Trabalhando com configurações e aliases no SSH
Se você se conecta frequentemente a diferentes servidores, pode facilitar sua vida adicionando uma configuração SSH no arquivo ~/.ssh/config
:
Host myserver
HostName 192.168.1.10
User student
IdentityFile ~/.ssh/id_rsa
Agora você pode se conectar simplesmente com o comando:
ssh myserver
Erros comuns e como corrigi-los
Erro "Connection refused". Isso significa que o servidor SSH não está executando na máquina remota. Verifique se ele está instalado e em execução.
Erro "Permission denied". Ou você digitou a senha errada ou as chaves não estão configuradas corretamente. Verifique o conteúdo do arquivo
~/.ssh/authorized_keys
no servidor.Erro "No route to host". Verifique se o servidor está acessível pela rede (use o comando
ping
).
Agora você tá equipado com conhecimento sobre como configurar o SSH, usar chaves e evitar problemas comuns. Essa é uma ferramenta poderosa usada em todos os lugares, seja configurando servidores no trabalho ou gerenciando um Raspberry Pi em casa.
GO TO FULL VERSION