Skip to content

Como configurar a autenticação de chave SSH no Linux

18 de maio de 2021

Secure Shell é o meio mais popular de login em um servidor ou desktop Linux remoto. Ao usar essa ferramenta, você obtém acesso à linha de comando em uma máquina remota por meio de um túnel seguro. Fora da caixa, você digitará a senha do usuário remoto. Embora esse método ainda seja mais seguro do que os mais antigos (como telnet), você pode torná-lo ainda mais seguro com a autenticação de chave SSH.

O que é autenticação de chave?

Imagine que você tem uma fechadura e a única maneira de abri-la é com uma chave específica que a fechadura sabe que pertence a você. Como a fechadura sabe que a chave pertence a você? Porque a chave contém uma assinatura que é exclusiva para você. Dentro da fechadura está uma assinatura correspondente que a chave usa para comparação. Se as assinaturas coincidirem, o cadeado será aberto. Se a chave caber, mas as assinaturas não corresponderem, a fechadura não abrirá. O modo como a autenticação de chave SSH funciona na vida real é que você cria um par de chaves (que contém um código privado e um código público) e copia a chave pública para o servidor no qual deseja fazer login. Se você tentar fazer login com autenticação de chave e o servidor não tiver a chave pública que corresponda à sua chave privada, ele não permitirá o acesso.

Como gerar um par de chaves SSH

A primeira coisa a fazer é gerar um par de chaves SSH, que cria os códigos que seu computador usará para autenticar os logins. Veja como fazer.

  1. Abra uma janela de terminal em sua área de trabalho.

  2. Emita o comando: ssh-keygen

  3. Dê um nome e localização à chave. Aperte Entrar / Retornar no teclado para usar o local padrão, que será exibido no Terminal.

    A localização de uma chave SSH

  4. Insira e verifique uma frase secreta para a chave. Certifique-se de que essa senha seja forte e exclusiva.

    Digite uma senha para a chave

  5. Agora você tem um par de chaves SSH. Você encontrará esses dois arquivos em ~ / .ssh, e seus nomes serão:

    • id_rsa – a chave privada.
    • id_rsa.pub – a chave pública.

Copie sua chave pública para a máquina remota

Em seguida, você deve copiar o arquivo de chave pública para a máquina remota na qual deseja fazer o login. Para fazer isso, digite o comando: ssh-copy-id USER @ REMOTE_IP

type = “code”> Onde USER é um nome de usuário na máquina remota e REMOTE_IP é o endereço IP da máquina remota.

Um exemplo do comando ssh-copy-id

Se esta for a primeira vez que você protege o shell na máquina remota, será necessário confirmar a conexão. Caso contrário, você verá um prompt para digitar a senha do usuário na máquina remota. Depois de digitar com sucesso sua senha remota, você está pronto para testar a conexão.

Testando a conexão

Teste a conexão emitindo o comando: ssh USER @ REMOTE_IP

type = “code”> Onde USER é um nome de usuário na máquina remota e REMOTE_IP é o endereço IP da máquina remota.

Um exemplo do comando ssh no Terminal

Você receberá um prompt para a senha longa do par de chaves SSH. Depois de digitar a senha de acesso correta, você acessará a máquina remota.

Desativando autenticação de senha

Você pode levar a segurança um passo adiante, desativando a autenticação por senha. Com essa configuração em vigor, a única maneira de obter acesso à máquina remota é a partir de uma máquina que contém a chave privada do par correspondente. Em outras palavras, nenhum par de chaves, nenhum acesso. Para desativar a autenticação de senha, faça login na máquina remota e execute o comando: sudo nano / etc / ssh / sshd_config

type = “code”> Neste arquivo, procure a linha: #PasswordAuthentication yes

type = “code”> Altere essa linha para: PasswordAuthentication no

type = “code”> Salve e feche o arquivo. Reinicie o SSH com o comando: sudo systemctl restart sshd

type = “código”>

Prompt de comando.

Agora, se você tentar fazer o login nessa máquina remota de qualquer desktop (ou servidor) que não inclua a chave privada, o sistema irá negar seu acesso.