Introdução
O SSH, ou shell seguro, é um protocolo criptografado usado para administrar e comunicar com servidores. Ao trabalhar com um servidor Debian, é provável que você passe a maior parte do tempo em uma sessão de terminal conectada ao seu servidor através do SSH.
Neste guia, vamos nos concentrar em configurar chaves SSH para uma instalação vanilla do Debian 11. As chaves SSH fornecem uma maneira fácil e segura de fazer login no seu servidor e são recomendadas para todos os usuários.
Passo 1 — Criar o Par de Chaves RSA
O primeiro passo é criar um par de chaves na máquina cliente (normalmente seu computador):
Por padrão, o ssh-keygen
criará um par de chaves RSA de 3072 bits, o que é seguro o suficiente para a maioria dos casos de uso (opcionalmente, você pode passar a bandeira -b 4096
para criar uma chave maior de 4096 bits).
Após inserir o comando, você deverá ver a seguinte saída:
OutputGenerating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):
Pressione enter para salvar o par de chaves no subdiretório .ssh/
em seu diretório doméstico, ou especifique um caminho alternativo.
Se você já havia gerado um par de chaves SSH anteriormente, poderá ver o seguinte prompt:
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Aviso: Se escolher sobrescrever a chave no disco, não será mais possível autenticar usando a chave anterior. Tenha muito cuidado ao selecionar sim, pois este é um processo destrutivo que não pode ser revertido.
Você deverá então ver o seguinte prompt:
OutputEnter passphrase (empty for no passphrase):
Aqui, opcionalmente, pode inserir uma frase secreta segura, o que é altamente recomendado. Uma frase secreta adiciona uma camada adicional de segurança para evitar que usuários não autorizados façam login. Para saber mais sobre segurança, consulte nosso tutorial sobre Como Configurar Autenticação Baseada em Chave SSH em um Servidor Linux.
Você deverá então ver a seguinte saída:
OutputYour identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:5E2BtTN9FHPBNoRXAB/EdjtHNYOHzTBzG5qUv7S3hyM root@debian-suricata
The key's randomart image is:
+---[RSA 3072]----+
| oo .O^XB|
| . +.BO%B|
| . = .+B+o|
| o o o . =.|
| S . . =|
| o.|
| .o|
| E o..|
| . ..|
+----[SHA256]-----+
Agora você tem uma chave pública e privada que pode usar para autenticar. O próximo passo é colocar a chave pública em seu servidor para poder usar a autenticação baseada em chave SSH para fazer login.
Passo 2 — Copie a Chave Pública para o Servidor Debian
A maneira mais rápida de copiar sua chave pública para o host Debian é usar um utilitário chamado ssh-copy-id
. Devido à sua simplicidade, este método é altamente recomendado se estiver disponível. Se você não tiver ssh-copy-id
disponível em sua máquina cliente, pode usar um dos dois métodos alternativos fornecidos nesta seção (copiando via SSH baseado em senha ou copiando manualmente a chave).
Copiando Chave Pública Usando ssh-copy-id
A ferramenta ssh-copy-id
está incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível no seu sistema local. Para que este método funcione, você já deve ter acesso SSH baseado em senha ao seu servidor.
Para usar a utilidade, você simplesmente precisa especificar o host remoto ao qual deseja se conectar e a conta de usuário à qual você tem acesso SSH baseado em senha. Esta é a conta para a qual sua chave pública SSH será copiada.
A sintaxe é:
Você pode ver a seguinte mensagem:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Isto significa que o seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite “yes” e pressione ENTER
para continuar.
Em seguida, a utilidade irá escanear sua conta local pela chave id_rsa.pub
que criamos anteriormente. Quando encontrar a chave, irá solicitar a senha da conta do usuário remoto:
Output/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
username@203.0.113.1's password:
Digite a senha (sua digitação não será exibida por motivos de segurança) e pressione ENTER
. A utilidade se conectará à conta no host remoto usando a senha fornecida. Em seguida, copiará o conteúdo da sua chave ~/.ssh/id_rsa.pub
para um arquivo no diretório ~/.ssh
da home da conta remota chamado authorized_keys
.
Você deverá ver a seguinte saída:
OutputNumber of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@203.0.113.1'"
and check to make sure that only the key(s) you wanted were added.
Neste ponto, sua chave id_rsa.pub
foi enviada para a conta remota. Você pode prosseguir para Passo 3.
Copiando Chave Pública Usando SSH
Se você não tem o ssh-copy-id
disponível, mas tem acesso SSH baseado em senha a uma conta em seu servidor, você pode enviar suas chaves usando um método SSH convencional.
Podemos fazer isso usando o comando cat
para ler o conteúdo da chave pública SSH em nosso computador local e enviando isso através de uma conexão SSH para o servidor remoto.
Do outro lado, podemos garantir que o diretório ~/.ssh
exista e tenha as permissões corretas sob a conta que estamos usando.
Então, podemos enviar o conteúdo que enviamos para um arquivo chamado authorized_keys
dentro deste diretório. Usaremos o símbolo de redirecionamento >>
para anexar o conteúdo em vez de sobrescrevê-lo. Isso nos permitirá adicionar chaves sem destruir as chaves adicionadas anteriormente.
O comando completo se parece com isso:
Você pode ver a seguinte mensagem:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite “yes” e pressione ENTER
para continuar.
Depois, você deve ser solicitado a inserir a senha da conta de usuário remota:
Outputusername@203.0.113.1's password:
Após inserir sua senha, o conteúdo da sua chave id_rsa.pub
será copiado para o final do arquivo authorized_keys
da conta de usuário remoto. Continue até Passo 3 se isso for bem-sucedido.
Copiando Chave Pública Manualmente
Se você não tiver acesso SSH baseado em senha disponível para seu servidor, você terá que completar o processo acima manualmente.
Vamos anexar manualmente o conteúdo do seu arquivo id_rsa.pub
ao arquivo ~/.ssh/authorized_keys
em sua máquina remota.
Para exibir o conteúdo da sua chave id_rsa.pub
, digite isso em seu computador local:
Você verá o conteúdo da chave, que deve se parecer com isso:
Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDgkLJ8d2gGEJCN7xdyVaDqk8qgeZqQ0MlfoPK3TzWI5dkG0WiZ16jrkiW/h6lhO9K1w89VDMnmNN9ULOWHrZMNs//Qyv/oN+FLIgK2CkKXRxTmbh/ZGnqOm3Zo2eU+QAmjb8hSsstQ3DiuGu8tbiWmsa3k3jKbWNWpXqY3Q88t+bM1DZrHwYzaIZ1BSA1ghqHCvIZqeP9IUL2l2DUfSCT9LXJEgMQhgjakJnzEGPgd5VHMR32rVrbIbbDzlyyoZ7SpCe5y0vYvbV2JKWI/8SEOmwehEHJ9RBZmciwc+1sdEcAJVMDujb9p5rX4hyvFpG0KGhZesB+/s7PdOa8zlIg4TZhXUHl4t1jpPC83Y9KEwS/Ni4dhaxlnr3T6l5hUX2cD+eWl1vVpogBqKNGBMrVR4dWs3Z4BVUf9exqTRRYOfgo0UckULqW5pmLW07JUuGo1kpFAxpDBPFWoPsg08CGRdEUS7ScRnMK1KdcH54kUZr0O88SZOsv9Zily/A5GyNM= demo@test
Acesse seu host remoto usando o método disponível.
Depois de ter acesso à sua conta no servidor remoto, certifique-se de que o diretório ~/.ssh
exista. Este comando criará o diretório se necessário, ou não fará nada se ele já existir:
Agora, você pode criar ou modificar o arquivo authorized_keys
dentro deste diretório. Você pode adicionar o conteúdo do seu arquivo id_rsa.pub
ao final do arquivo authorized_keys
, criando-o se necessário, usando este comando:
No comando acima, substitua public_key_string
pela saída do comando cat ~/.ssh/id_rsa.pub
que você executou em seu sistema local. Deve começar com ssh-rsa AAAA...
.
Por fim, vamos garantir que o diretório ~/.ssh
e o arquivo authorized_keys
tenham as permissões apropriadas definidas:
Isso remove recursivamente todas as permissões de “grupo” e “outros” para o diretório ~/.ssh/
.
Se você estiver usando a conta root
para configurar chaves para uma conta de usuário, também é importante que o diretório ~/.ssh
pertença ao usuário e não ao root
:
Neste tutorial, nosso usuário é chamado sammy, mas você deve substituir o nome de usuário apropriado no comando acima.
Agora você pode tentar autenticação sem senha com seu servidor Debian.
Passo 3 — Autenticar no Servidor Debian Usando Chaves SSH
Se você concluiu com sucesso um dos procedimentos acima, você deverá ser capaz de fazer login no host remoto sem a senha da conta remota.
O processo geral é o mesmo:
Se esta for a primeira vez que você está se conectando a este host (se você usou o último método acima), você pode ver algo assim:
OutputThe authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Isso significa que seu computador local não reconhece o host remoto. Digite “yes” e depois pressione ENTER
para continuar.
Se você não forneceu uma frase secreta para sua chave privada, será conectado imediatamente. Se você forneceu uma frase secreta para a chave privada quando a criou, será solicitado que a digite agora (observe que suas teclas digitadas não serão exibidas na sessão do terminal por motivos de segurança). Após autenticar, uma nova sessão de shell deverá abrir para você com a conta configurada no servidor Debian.
Se a autenticação baseada em chave foi bem-sucedida, continue aprendendo como aumentar a segurança do seu sistema desabilitando a autenticação por senha.
Passo 4 — Desabilitar a Autenticação por Senha no seu Servidor
Se você conseguiu fazer login em sua conta usando SSH sem uma senha, você configurou com sucesso a autenticação baseada em chave SSH para sua conta. No entanto, o mecanismo de autenticação baseado em senha ainda está ativo, o que significa que seu servidor ainda está exposto a ataques de força bruta.
Antes de concluir as etapas desta seção, certifique-se de que você tenha configurado a autenticação baseada em chave SSH para a conta root neste servidor, ou preferencialmente, que você tenha configurado a autenticação baseada em chave SSH para uma conta não-root neste servidor com privilégios de sudo
. Este passo irá restringir os logins baseados em senha, portanto, garantir que você ainda possa obter acesso administrativo é crucial.
Depois de ter confirmado que sua conta remota tem privilégios administrativos, faça login em seu servidor remoto com chaves SSH, seja como root ou com uma conta com privilégios de sudo
. Em seguida, abra o arquivo de configuração do daemon SSH:
Dentro do arquivo, procure por uma diretiva chamada PasswordAuthentication
. Isso pode estar comentado. Descomente a linha e defina o valor como “no”. Isso desabilitará sua capacidade de fazer login via SSH usando senhas de conta:
...
PasswordAuthentication no
...
Salve e feche o arquivo quando terminar, pressionando CTRL
+ X
, depois Y
para confirmar a gravação do arquivo e, finalmente, ENTER
para sair do nano. Para realmente implementar essas alterações, precisamos reiniciar o serviço sshd
:
Como precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente antes de fechar esta sessão:
Depois de verificar seu serviço SSH, você pode fechar com segurança todas as sessões atuais do servidor.
O daemon SSH em seu servidor Debian agora responde apenas a chaves SSH. A autenticação baseada em senha foi desativada com sucesso.
Conclusão
Agora você deve ter a autenticação baseada em chave SSH configurada no seu servidor, permitindo que você faça login sem fornecer uma senha de conta.
Se você gostaria de aprender mais sobre como trabalhar com o SSH, dê uma olhada no nosso Guia Essencial do SSH.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-debian-11