Como adicionar chaves SSH no Ubuntu 20.04

Configure um login seguro sem senha para o seu servidor Ubuntu remoto usando chaves SSH

SSH é um protocolo de rede cliente-servidor seguro que ajuda um computador cliente a se conectar e se comunicar com um servidor remoto. A conexão SSH garante que os comandos digitados no terminal sejam enviados ao servidor remoto por meio de um canal criptografado.

Existem dois tipos de mecanismos de autenticação usados ​​para se conectar ao servidor remoto, autenticação baseada em senha (sujeita a ataques de força bruta) e autenticação baseada em Chaves SSH (que é muito segura).

Na autenticação baseada em chave SSH, um par de chaves é gerado no computador cliente, chamado de chave pública e chave privada. Uma cópia dessa chave pública é disponibilizada no servidor remoto. Quando um cliente envia uma solicitação de conexão ao servidor, o servidor gera uma string aleatória e a criptografa usando a chave pública. Esta string só pode ser descriptografada usando a chave privada disponível no computador cliente. Este método garante que o servidor só possa ser acessado por clientes que contêm a chave privada.

Neste guia, veremos como configurar chaves SSH no servidor Ubuntu 20.04 LTS.

Veja se você tem alguma chave SSH existente no seu computador

Para verificar se já existe um par de chaves SSH em seu computador, digite este comando em seu terminal.

ls -l ~ / .ssh / id _ *. pub

Se o comando acima retornar Não existe tal arquivo ou diretório ou nenhuma equivalência encontrada, isso significa que o par de chaves SSH não existe.

Se você tiver um par de chaves SSH existente, poderá usar o mesmo par de chaves para acessar dois servidores remotos ou também criar um par de chaves diferente com um nome diferente. Vamos passar para a próxima etapa e ver como gerar chaves SSH para ambos os casos.

Criação de chaves SSH em um computador cliente

Para gerar um novo par de chaves SSH em seu computador, digite o comando conforme mostrado abaixo.

ssh-keygen

Por padrão, as chaves SSH são de 2048 bits. Para melhor segurança, se você deseja gerar chaves SSH com bits mais altos, use o seguinte comando.

ssh-keygen -b 4096

Se o comando for executado com êxito, a seguinte mensagem aparecerá na tela.

gerando par de chaves rsa pública / privada. Digite o arquivo no qual deseja salvar a chave (/home/harshit/.ssh/id_rsa):

Agora, se você não tiver nenhum par de chaves SSH existente em seu computador, basta pressionar Entrar, mas se você tiver uma chave SSH existente, salve a chave com um nome de arquivo diferente, conforme mostrado abaixo.

Insira o arquivo no qual deseja salvar a chave (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Substitua o xxx no final do nome do arquivo com um nome apropriado, conforme mostrado abaixo e pressione Entrar.

Digite o arquivo no qual deseja salvar a chave (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

O próximo prompt solicitará que você insira uma frase secreta de comprimento arbitrário, que irá garantir a segurança de dois níveis em seu dispositivo.

Digite a frase-senha (vazia para nenhuma frase-senha): Digite a mesma frase-senha novamente:

Inserir esta senha irá garantir que, mesmo se uma pessoa obtiver acesso à sua chave privada, ela não será capaz de acessar seu servidor remoto sem esta senha.

Assim que todo o processo for concluído, a seguinte mensagem aparecerá em sua tela.

ssh-keygen -b 4096 Assim que todo o processo de geração da chave SSH for concluído, a seguinte mensagem aparecerá em sua tela.

As chaves SSH foram geradas em seu sistema. Agora é hora de copiar a chave pública no servidor remoto.

Copiando a chave pública para o servidor Ubuntu remoto

O método mais fácil e rápido de copiar a chave pública para o servidor remoto é usando o ssh-copy-id Utilitário. Mas se este utilitário não estiver disponível em sua máquina por algum motivo, você também pode usar outros métodos fornecidos nesta seção.

Usando o utilitário ssh-copy-id

O ssh-copy-id O utilitário está disponível por padrão em sua máquina Ubuntu, que copia a chave pública de seu dispositivo para o diretório apropriado de sua máquina Ubuntu remota.

Para copiar a chave ssh pública, basta digitar o comando em seu terminal, conforme mostrado abaixo.

ssh-copy-id username @ hostname

Substitua o nome do usuário e nome de anfitrião no comando acima com o nome de usuário e nome do host do seu servidor.

A seguinte mensagem aparecerá em seu terminal se você estiver se conectando ao seu host pela primeira vez, digite sim e pressione Entrar.

A autenticidade do host '172.105.XX.XX (172.105.XX.XX)' não pode ser estabelecida. A impressão digital da chave ECDSA é xx: xx: xx: xx: 77: fe: 73: xx: xx: 55: 00: ad: d6: xx: xx: xx. Tem certeza de que deseja continuar se conectando (sim / não)? sim

Agora o ssh-copy-id utilitário irá procurar o arquivo com o nome id_rsa.pub que contém a chave SSH pública. Assim que o processo de digitalização for concluído, ele solicitará que você insira a senha do seu servidor remoto, conforme mostrado abaixo. Digite a senha e clique Entrar.

/ usr / bin / ssh-copy-id: INFO: tentativa de logar com a (s) nova (s) chave (s), para filtrar qualquer uma que já esteja instalada / usr / bin / ssh-copy-id: INFO: 1 chave (s) ) permanecem para serem instalados - se você for solicitado agora, é para instalar as novas chaves [email protected]'s password:

Assim que a chave for adicionada, a seguinte mensagem aparecerá em seu terminal como saída.

Número de chaves adicionadas: 1 Agora tente fazer o login na máquina, com: "ssh '[email protected]'" e verifique se apenas a (s) chave (s) que você deseja foram adicionadas.

Caso você tenha várias chaves SSH em seu computador cliente, para copiar a chave pública apropriada para seu computador remoto, digite o comando no padrão mostrado abaixo.

ssh-copy-id -i id_rsa_xxx.pub nomedeusuario @ host

💡 Dica

Não se esqueça de colocar .pub no final do nome do arquivo ao digitar no terminal.

Copiando a chave pública pelo método de tubulação

Digite o seguinte comando no terminal se ssh-copy-id utilitário não está disponível. Este comando pode parecer um pouco mais demorado, mas funciona de maneira adequada.

cat ~ / .ssh / id_rsa.pub | ssh remote_username @ server_ip_address "mkdir -p ~ / .ssh && touch ~ / .ssh / authorized_keys && chmod -R go = ~ / .ssh && cat >> ~ / .ssh / authorized_keys"

Substituir remote_username e server_ip_address com seu nome de usuário e endereço IP.

Se você tiver várias chaves SSH disponíveis em seu computador, substitua o id_rsa.pub com o arquivo de chave SSH pública de sua escolha. Por exemplo, id_rsa_client_1.pub.

Digite a senha do usuário remoto quando solicitado e pressione Entrar.

senha de [email protected]:

Depois de digitar a senha, o id_rsa.pub arquivo será copiado para o Chaves_Autorizadas arquivo do servidor remoto.

Cópia manual da chave pública

Use este método quando você não tiver acesso ao seu sistema remoto por meio da autenticação de senha.

Abra o id_rsa.pub arquivo usando o gato comando no terminal. Você também pode abri-lo em um editor de texto, a finalidade é apenas copiar o conteúdo do arquivo.

cat ~ / .ssh / id_rsa.pub

O conteúdo do arquivo será semelhante, conforme mostrado abaixo.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Agora, faça login em seu servidor remoto e cole o conteúdo copiado usando o comando mostrado abaixo. Substitua o above_string com o conteúdo copiado.

echo above_string >> ~ / .ssh / authorized_keys

Configurando várias chaves SSH (opcional)

Esta etapa é para pessoas que têm várias chaves SSH configuradas em seu computador cliente. Pule esta seção se você tiver apenas uma configuração de chave SSH.

Para gerenciar várias chaves SSH, criaremos agora um config arquivo dentro do .ssh diretório usando o comando mostrado abaixo.

cd ~ / .ssh vim config

Modelo eu para entrar no modo de comando e digitar os detalhes de vários hosts, conforme mostrado no exemplo a seguir:

Host remote-ubuntu-server HostName 172.105.XX.XX User root IdentityFile ~ / .ssh / id_rsa_client_1 Host remote-ubuntu-server HostName 172.106.XX.XX User root IdentityFile ~ / .ssh / id_rsa_client_2

Da mesma forma, digite os detalhes de outros servidores remotos e suas chaves. Assim que o processo estiver completo, pressione Esc e : wq para salvar e sair.

Agora, os processos subsequentes são iguais para ambos terem uma ou várias chaves SSH no computador cliente.

Faça login em seu servidor remoto usando chaves SSH

Assim que o processo de cópia de sua chave pública for concluído, faça login em seu servidor remoto digitando o comando conforme mostrado abaixo.

ssh remote_username @ server_ip_address

Se você forneceu a frase secreta ao gerar o par de chaves, será solicitado que você a insira. Uma nova sessão será aberta após a conclusão do processo de autenticação.

Agora você configurou com êxito a autenticação baseada em chaves SSH em seu servidor remoto. Mas a autenticação baseada em senha ainda está ativa em seu servidor, isso significa que seu servidor mais remoto ainda está sujeito a ataques de força bruta.

Portanto, agora iremos desativar o mecanismo de login baseado em senha completamente de nosso servidor remoto.

Desativar mecanismo de login baseado em senha

Antes de fazer qualquer alteração, certifique-se de que o usuário root ou qualquer usuário habilitado para sudo para sua conta remota tenha acesso ao seu servidor usando o sistema de autenticação baseado em chave SSH. Esta etapa irá bloquear ou desabilitar o login baseado em senha completamente, então é crucial que pelo menos um usuário com privilégios de root tenha acesso ao servidor através da chave SSH.

Faça login em seu servidor Ubuntu remoto e digite o comando mostrado abaixo.

sudo vim / etc / ssh / sshd_config
  • pressione Esc, / e digite ‘PasswordAuthentication’ e pressione entrar.
  • Agora pressione eu e altere o valor de ‘PasswordAuthentication yes’ para ‘PasswordAuthentication no’.
  • pressione Esc e repita o processo acima para encontrar ‘ChallengeResponseAuthentication’, ‘UsePAM’ e altere seus valores para não também.
PasswordAuthentication não ChallengeResponseAuthentication não UsePAM não

Assim que todos os valores forem definidos para não, pressione Esc, modelo : wq e acertar entrar.

Para ativar todas as alterações, reinicie o ssh serviço usando o comando abaixo.

sudo systemctl restart ssh

Agora abra uma nova janela de terminal em seu computador e verifique se a autenticação de chave SSH está funcionando corretamente antes de fechar a sessão atual.

Assim que o processo de verificação for concluído, feche todas as sessões em execução.

Agora configuramos com sucesso a autenticação baseada em chave SSH em nosso servidor Ubuntu 20.04. Agora ninguém pode fazer login no seu servidor usando um mecanismo de login baseado em senha.