Como Gerar uma Chave SSH Pública/Privada no Linux

Se você usa SSH com frequência para se conectar a um host remoto, uma maneira de proteger seu servidor SSH é usar uma chave SSH pública/privada para que nenhuma senha seja transmitida pela rede. Isso também pode ajudar a prevenir ataques de força bruta.
No Linux, criar uma chave SSH pública/privada é fácil.
- Abra um terminal. Digite:
ssh-keygen -t rsaAlternativamente, você também pode usar a tecnologia DSA (Algoritmo de Assinatura Digital) para criar a chave pública/privada.
ssh-keygen -t dsaNota: houve muito debate sobre a segurança do DSA e do RSA. Na minha opinião, a menos que você seja muito exigente e goste de se aprofundar nos detalhes técnicos entre as duas tecnologias, não importa qual das duas você escolha. Ambas funcionarão bem.
- Na próxima tela, você verá um aviso pedindo a localização para salvar a chave. O local padrão é a pasta .ssh no seu diretório Home. Pressione Enter para aceitar a configuração padrão.

- Você será solicitado a inserir uma frase secreta – NÃO a frase secreta para se conectar ao seu host remoto, mas a frase secreta para desbloquear a chave privada, de modo que ninguém possa acessar seu servidor remoto mesmo que consiga sua chave privada. A frase secreta é opcional. Para deixá-la em branco, basta pressionar Enter.

- Sua chave SSH pública e privada deve agora ter sido gerada. Abra o gerenciador de arquivos e navegue até o diretório .ssh. Você deve ver dois arquivos: id_rsa e id_rsa.pub.

- Faça o upload da sua nova chave SSH pública para o seu host remoto executando o seguinte comando:
ssh-copy-id username@remote-host-ip-address
- Faça login no seu host remoto e edite seu arquivo de configuração SSH:
ssh username@remote-host-ip-address
sudo nano /etc/ssh/sshd_configRole para baixo no arquivo de configuração e certifique-se de que os seguintes atributos estejam configurados corretamente:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication noPressione Ctrl + O para gravar e salvar o arquivo, e depois Ctrl + X para fechar o arquivo.

- Reinicie o servidor SSH no host remoto:
sudo systemctl restart sshÉ isso. Agora você pode se conectar ao seu host remoto com o seguinte comando:
ssh username@remote-host-ip-address
Perguntas Frequentes
Copiei minha chave SSH para meu servidor remoto e estou recebendo um erro “Permissão Negada”.
Esse problema é mais provável que seja devido a um problema com a pasta “.ssh” do seu host remoto. Por padrão, o daemon SSH rejeita quaisquer conexões de entrada se sua pasta de configuração e o arquivo “authorized_keys” não tiverem as permissões corretas.
Para mudar as permissões de arquivos e pastas, acesse um console local para sua máquina remota, depois vá para seu diretório “/home” e execute: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys. Por fim, reinicie o daemon para aplicar suas novas configurações: sudo systemctl restart ssh.
É possível criar várias chaves SSH para o mesmo servidor remoto?
Sim! No entanto, você precisa garantir que cada chave SSH na sua máquina tenha um nome de arquivo exclusivo executando: ssh-keygen -f /home/$USER/.ssh/nome_do_arquivo.
Além disso, certifique-se de que você especifique a chave que deseja usar para fazer login no seu host remoto executando: ssh -i /home/$USER/.ssh/nome_do_arquivo [email protected].
É possível importar uma nova chave SSH para um host remoto com uma chave antiga funcionando?
Sim! Primeiro, importe sua nova chave para o agente de autenticação SSH: ssh-add. Em seguida, faça login na sua máquina antiga e importe sua chave para o mesmo agente de autenticação: ssh -A old.machine.ip.address && ssh-add -c.
Por último, saia da máquina antiga pressionando Ctrl + D e conecte-se ao seu host remoto com suas novas e antigas chaves.
Crédito da imagem: Unsplash. Todas as alterações e capturas de tela por Ramces Red.