Logo da MMHospedagem
Carregando...
Como configurar chaves SSH no Ubuntu 22.04
imprimir
  • Ubuntu, SSH
  • 0

SSH, ou shell seguro, é um protocolo criptografado usado para administrar e se comunicar com servidores. Ao trabalhar com um servidor Ubuntu, é provável que você passe a maior parte do seu tempo em uma sessão de terminal conectada ao seu servidor através de SSH.

Neste guia, vamos nos concentrar na configuração de chaves SSH para uma instalação do Ubuntu 22.04. As chaves SSH fornecem uma maneira segura de fazer login no servidor e são recomendadas para todos os usuários.

Criando o par de chaves

A primeira etapa é criar um par de chaves na máquina cliente (geralmente seu computador):

ssh-keygen

Por padrão, as versões recentes do criarão um par de chaves RSA de 3072 bits, que é seguro o suficiente para a maioria dos casos de uso (você pode, opcionalmente, passar o sinalizador para criar uma chave maior de 4096 bits).ssh-keygen-b 4096

Depois de inserir o comando, você verá a seguinte saída:

Output
Generating 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 do diretório base ou especifique um caminho alternativo. .ssh/

Se você tiver gerado anteriormente um par de chaves SSH, poderá ver o seguinte prompt:

Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?

 

Se você optar por substituir a chave no disco, não poderá mais se autenticar usando a chave anterior. Tenha muito cuidado ao selecionar sim, pois este é um processo destrutivo que não pode ser revertido.

Em seguida, você verá o seguinte prompt:

Output
Enter passphrase (empty for no passphrase):

 

Aqui você opcionalmente pode inserir uma senha segura, o que é altamente recomendado. Uma senha adiciona uma camada adicional de segurança para impedir que usuários não autorizados façam login. 

Em seguida, você verá a saída semelhante à seguinte:

Output
Your 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:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host
The key's randomart image is:
+---[RSA 3072]----+
|                .|
|               + |
|              +  |
| .           o . |
|o       S   . o  |
| + o. .oo. ..  .o|
|o = oooooEo+ ...o|
|.. o *o+=.*+o....|
|    =+=ooB=o.... |
+----[SHA256]-----+

 

Agora você tem uma chave pública e privada que pode ser usada para autenticar. A próxima etapa é colocar a chave pública no servidor para que você possa usar a autenticação baseada em chave SSH para fazer logon.

Copiando a chave pública para o seu servidor Ubuntu

A maneira mais rápida de copiar sua chave pública para o host Ubuntu é usar um utilitário chamado . Devido à sua simplicidade, este método é altamente recomendado, se disponível. Se você não tiver disponível para você em sua máquina cliente, você pode usar um dos dois métodos alternativos fornecidos nesta seção (copiar via SSH baseado em senha ou copiar manualmente a chave).ssh-copy-idssh-copy-id

Copiando a chave pública usando ssh-copy-id

A ferramenta está incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível em seu sistema local. Para que esse método funcione, você já deve ter acesso SSH baseado em senha ao seu servidor. ssh-copy-id

Para usar o utilitário, especifique 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 SSH pública será copiada.

A sintaxe é:

ssh-copy-id username@remote_host

Poderá ver a seguinte mensagem:

Output
The 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 computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite "sim" e pressione para continuar.ENTER

Em seguida, o utilitário verificará sua conta local em busca da chave que criamos anteriormente. Quando ele encontrar a chave, ele solicitará a senha da conta do usuário remoto: id_rsa.pub

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 . O utilitário se conectará à conta no host remoto usando a senha fornecida. Em seguida, ele copiará o conteúdo da sua chave para um arquivo no diretório pessoal da conta remota chamado. ENTER ~/.ssh/id_rsa.pub ~/.sshauthorized_keys

Você deve ver a seguinte saída:

Output
Number 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 foi carregada para a conta remota. 

Copiando a chave pública usando SSH

Se você não tiver disponível, mas tiver acesso SSH baseado em senha a uma conta em seu servidor, poderá carregar suas chaves usando um método SSH convencional. ssh-copy-id

Podemos fazer isso usando o comando para ler o conteúdo da chave SSH pública em nosso computador local e canalizando isso através de uma conexão SSH com o servidor remoto. cat

Por outro lado, podemos ter certeza de que o diretório existe e tem as permissões corretas na conta que estamos usando. ~/.ssh

Podemos então produzir o conteúdo que canalizamos para um arquivo chamado dentro deste diretório. Usaremos o símbolo de redirecionamento para anexar o conteúdo em vez de substituí-lo. Isso nos permitirá adicionar chaves sem destruir chaves adicionadas anteriormente. authorized_keys >>

O comando completo tem a seguinte aparência:

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

Poderá ver a seguinte mensagem:

Output
The 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 computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite e pressione para continuar. yes ENTER

Depois, você deve ser solicitado a inserir a senha da conta de usuário remoto:

Output
username@203.0.113.1's password:

Depois de inserir sua senha, o conteúdo de sua chave será copiado para o final do arquivo da conta do usuário remoto. Continue se isso for bem-sucedido. id_rsa.pub authorized_keys

Copiando a chave pública manualmente

Se você não tiver acesso SSH baseado em senha ao seu servidor disponível, você terá que concluir o processo acima manualmente.

Acrescentaremos manualmente o conteúdo do seu arquivo ao arquivo em sua máquina remota. id_rsa.pub ~/.ssh/authorized_keys

Para exibir o conteúdo da chave, digite isso no computador local: id_rsa.pub

cat ~/.ssh/id_rsa.pub

Você verá o conteúdo da chave, que deve ter a seguinte aparência:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Acesse seu host remoto usando qualquer método que você tenha disponível.

Depois de ter acesso à sua conta no servidor remoto, verifique se o diretório existe. Este comando criará o diretório, se necessário, ou não fará nada se ele já existir: ~/.ssh

mkdir -p ~/.ssh

Agora, você pode criar ou modificar o arquivo dentro desse diretório. Você pode adicionar o conteúdo do seu arquivo ao final do arquivo, criando-o se necessário, usando este comando: authorized_keys id_rsa.pub authorized_keys

echo public_key_string >> ~/.ssh/authorized_keys

No comando acima, substitua o pela saída do comando que você executou no sistema local. Deve começar com .public_key_string cat ~/.ssh/id_rsa.pub ssh-rsa AAAA...

Finalmente, garantiremos que o diretório e o arquivo tenham as permissões apropriadas definidas: ~/.sshauthorized_keys

chmod -R go= ~/.ssh

Isso remove recursivamente todas as permissões "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 pertença ao usuário e não ao root~/.ssh

chown -R sammy:sammy ~/.ssh

Neste tutorial, nosso usuário é chamado sammy, mas você deve substituir o nome de usuário apropriado no comando acima.

Agora podemos tentar autenticação sem senha com nosso servidor Ubuntu.

 

Autenticando para o seu servidor Ubuntu usando chaves SSH

Se você concluiu com êxito um dos procedimentos acima, você deve ser capaz de fazer logon no host remoto sem fornecer a senha da conta remota.

O processo básico é o mesmo:

ssh username@remote_host

Se esta for sua primeira vez se conectando a este host (se você usou o último método acima), você pode ver algo assim:

Output
The 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 computador local não reconhece o host remoto. Digite "yes" e pressione para continuar. ENTER

Se você não forneceu uma senha para sua chave privada, você será conectado imediatamente. Se você forneceu uma senha para a chave privada quando criou a chave, você será solicitado a inseri-la agora (observe que os pressionamentos de tecla não serão exibidos na sessão do terminal por segurança). Após a autenticação, uma nova sessão shell deve ser aberta para você com a conta configurada no servidor Ubuntu.

Se a autenticação baseada em chave foi bem-sucedida, continue para aprender a proteger ainda mais seu sistema desabilitando a autenticação de senha.

Desabilitando a autenticação de senha no servidor

Se você conseguiu fazer login em sua conta usando SSH sem uma senha, você configurou com êxito a autenticação baseada em chave SSH para sua conta. No entanto, seu 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 nesta seção, verifique se você tem a autenticação baseada em chave SSH configurada para a conta raiz neste servidor ou, de preferência, se você tem a autenticação baseada em chave SSH configurada para uma conta não raiz neste servidor com privilégios. Esta etapa bloqueará logins baseados em senha, portanto, garantir que você ainda será capaz de obter acesso administrativo é crucial. sudo

Depois de confirmar que sua conta remota tem privilégios administrativos, faça login no servidor remoto com chaves SSH, seja como root ou com uma conta com privilégios. Em seguida, abra o arquivo de configuração do daemon SSH: sudo

sudo nano /etc/ssh/sshd_config

Dentro do arquivo, procure uma diretiva chamada . Esta linha pode ser comentada com um no início da linha. Remova o comentário da linha removendo o , e defina o valor como . Isso desabilitará sua capacidade de fazer login via SSH usando senhas de conta: PasswordAuthentication no

/etc/ssh/sshd_config
. . .
PasswordAuthentication no
. . .

Salve e feche o arquivo quando terminar pressionando , em seguida, para confirmar o salvamento do arquivo e, finalmente, para sair nano. Para realmente ativar essas alterações, precisamos reiniciar o serviço: CTRL+X ENTER sshd

sudo systemctl restart ssh

Por precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente antes de fechar sua sessão atual:

ssh username@remote_host

Depois de verificar se o serviço SSH está funcionando corretamente, você pode fechar com segurança todas as sessões atuais do servidor.

O daemon SSH no seu servidor Ubuntu agora só responde à autenticação baseada em chave SSH. Os logins baseados em senha foram desativados.


Conclusão

Agora você deve ter a autenticação baseada em chave SSH configurada em seu servidor, permitindo que você entre sem fornecer uma senha de conta.

Esta resposta lhe foi útil?

Artigos Relacionados

MMHospedagem