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 padrão 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 (geralmente 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 (você pode opcionalmente passar a flag -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 pessoal, ou especifique um caminho alternativo.
Se você já gerou anteriormente um par de chaves SSH, poderá ver o seguinte prompt:
Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Aviso: Se você optar por sobrescrever a chave no disco, não será possível autenticar usando a chave anterior novamente. Tenha muito cuidado ao selecionar sim, pois este é um processo destrutivo que não pode ser revertido.
Você deve então ver o seguinte prompt:
OutputEnter passphrase (empty for no passphrase):
Aqui, opcionalmente, você 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.
Então, você deve 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ê possui uma chave pública e privada que pode usar para autenticação. 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 (copiar via SSH baseado em senha, ou copiar 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 este método funcionar, você deve ter acesso SSH baseado em senha ao seu servidor.
Para usar a utilidade, você simplesmente precisa especificar o host remoto ao qual gostaria de se conectar e a conta de usuário à qual você tem acesso SSH baseado em senha. Esta é a conta para a qual sua chave SSH pública 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 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á examinar sua conta local para a chave id_rsa.pub
que criamos anteriormente. Quando encontrar a chave, 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
do usuário remoto 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 a Chave Pública Usando SSH
Se você não tiver o ssh-copy-id
disponível, mas tiver 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 encaminhando isso por meio 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 na conta que estamos usando.
Podemos então enviar o conteúdo que encaminhamos 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 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 remoto:
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 para Etapa 3 se isso foi bem-sucedido.
Copiando Chave Pública Manualmente
Se você não tiver acesso SSH baseado em senha disponível para seu servidor, será necessário 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 que estiver disponível.
Assim que tiver acesso à sua conta no servidor remoto, certifique-se de que o diretório ~/.ssh
existe. 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 no seu sistema local. Deve começar com ssh-rsa AAAA...
.
Finalmente, 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 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 a 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 êxito um dos procedimentos acima, deverá conseguir 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 o seu computador local não reconhece o host remoto. Digite “yes” e 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 a inseri-la agora (observe que suas teclas digitadas não serão exibidas na sessão do terminal por motivos de segurança). Após a autenticação, uma nova sessão de shell deve ser aberta para você com a conta configurada no servidor Debian.
Se a autenticação baseada em chaves 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 na sua conta usando SSH sem uma senha, você configurou com sucesso a autenticação baseada em chave SSH para a sua conta. No entanto, o mecanismo de autenticação baseado em senha ainda está ativo, o que significa que o 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 chaves SSH para a conta root neste servidor, ou de preferência, que você tenha configurado a autenticação baseada em chaves SSH para uma conta não-root neste servidor com privilégios de sudo
. Este passo bloqueará as entradas baseadas em senha, então garantir que você ainda será capaz de obter acesso administrativo é crucial.
Depois de confirmar que sua conta remota tem privilégios administrativos, faça login no 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 o serviço SSH, você pode fechar com segurança todas as sessões de servidor atuais.
O daemon SSH no seu servidor Debian agora responde apenas às chaves SSH. A autenticação baseada em senha foi desabilitada com sucesso.
Conclusão
Você deve agora 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 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