Segurança SSH sem Senha: Configure Chaves SSH no Linux em 5 Minutos

O SSH é uma tecnologia excelente, permitindo diversas aplicações como ocultar tráfego VPN, proteger conexões com websites e muito mais. No entanto, a necessidade de digitar senhas a cada login em um computador remoto pode ser cansativa. Se você é um desenvolvedor que precisa se conectar a várias máquinas via SSH usando um script Bash, ou simplesmente um usuário que busca praticidade, existe uma solução: SSH sem senha. Este método envolve gerar uma chave SSH segura no computador principal e compartilhá-la para acesso ao outro PC. Isso permite que qualquer um com a chave faça login, mesmo sem a senha. Veja como configurar isso.

O que são Chaves SSH?

Uma chave SSH é um arquivo de identificação exclusivo, usado para autenticação com o Secure Shell. Essas chaves servem para identificar um usuário como “confiável” ao fazer login. Elas permitem a autenticação por chave em vez de senha. Isso significa que, ao invés de inserir sua senha a cada conexão SSH, você usa sua chave SSH.

A chave SSH é armazenada em um local seguro no seu sistema Linux, e a partir daí, você pode se conectar ao computador remoto sem senha quantas vezes desejar.

Gerando Chaves SSH Seguras

Para gerar uma chave SSH segura, o SSH precisa estar operacional. Isso não significa necessariamente que você precise de um servidor SSH ativo, mas que as ferramentas básicas do SSH estejam instaladas e funcionando em seu PC Linux. Se você não sabe como configurar o SSH, consulte nosso guia.

As chaves SSH devem ser geradas sempre no sistema que hospeda o servidor SSH. Não tente gerá-las no servidor que não hospeda uma sessão SSH e depois copiá-las para a máquina host SSH, pois isso não funcionará.

Para começar a geração das chaves, abra um terminal e execute o seguinte comando:

ssh-keygen -t rsa

O comando `ssh-keygen` exibirá “Gerando par de chaves rsa pública/privada”, indicando que o sistema está criando uma chave pública e uma chave privada. Chaves públicas podem ser compartilhadas sem problemas, enquanto chaves privadas nunca devem ser compartilhadas. Isso explica o termo “privada”.

As chaves serão salvas em `/home/nome_do_usuario/.ssh/id_rsa`.

Atenção: Não apague a pasta `~/.ssh`, pois ela contém suas chaves. Se você modificar esta pasta e tentar se conectar remotamente, o SSH falhará, exibirá um aviso e o bloqueará.

Utilizando Chaves SSH em uma Máquina Remota

Agora que as chaves SSH (pública e privada) foram criadas, você precisa copiá-las para o sistema que deseja acessar. Repita este processo para todas as máquinas que você planeja acessar por SSH. Caso contrário, as máquinas que não tiverem a chave ainda necessitarão de senha para fazer login.

Para adicionar as chaves ao sistema remoto, siga este exemplo. Certifique-se de realizar este procedimento a partir da máquina principal, via SSH.

ssh [email protected] mkdir -p .ssh

Este comando SSH cria uma pasta oculta `~/.ssh` no diretório inicial da máquina remota (usando o usuário usado para fazer login). Esta pasta é crucial, pois é onde vamos copiar os arquivos de chave SSH recém-gerados.

Para copiar os arquivos de chave SSH, execute este comando da máquina principal para a máquina remota que precisa das chaves:

cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

A cópia pode levar alguns segundos dependendo da velocidade da rede. Após a conclusão, o computador remoto terá as chaves geradas e poderá se conectar à máquina principal via SSH sem precisar de senha.

Backup de Chaves SSH

As chaves SSH são importantes e únicas, por isso é essencial fazer backup delas. O problema é que, se você salvar o backup em um local inseguro, alguém pode encontrar sua chave SSH e usá-la. Portanto, qual é a melhor forma de fazer um backup seguro? A resposta é a criptografia.

A maneira mais rápida, eficiente e fácil de criptografar é usando o GnuPG. Essa ferramenta já está integrada em muitas ferramentas de criptografia existentes no Linux. Para instalar o GnuPG, abra o terminal e procure por “gpg” no gerenciador de pacotes. O programa deve ser fácil de encontrar, mesmo em distribuições Linux menos comuns.

Após a instalação do GPG, comece o processo de criptografia comprimindo o diretório `~/.ssh` em um arquivo tar. Isso evita a necessidade de criptografar cada arquivo individualmente na pasta `~/.ssh`.

tar -czvf ssh-stuff.tar.gz /home/nome_do_usuario/.ssh

Após a compressão, inicie o processo de criptografia.

Observação: Antes de criptografar, execute `gpg` no terminal para gerar um novo chaveiro.

gpg -c ssh-stuff.tar.gz

Quando o processo de criptografia terminar, o GnuPG criará um arquivo com o nome “ssh-stuff.tar.gz.gpg”. Você pode excluir a versão original e descriptografada do arquivo. Para descriptografar o arquivo de backup, utilize:

gpg ssh-stuff.tar.gz.gpg