Alexandre Medeiros

Dicas para você passar na LPIC-1 e 2 e outros assuntos de TI

Como configurar chaves SSH

As chaves SSH fornecem uma maneira mais segura de fazer login em um servidor do que usar apenas uma senha. Embora uma senha possa eventualmente ser quebrada com um ataque de força bruta, as chaves SSH são quase impossíveis de serem decifradas apenas por esse tipo de ataque.

A geração de um par de chaves fornece duas longas sequências de caracteres: uma chave pública e uma privada. Você pode colocar a chave pública em qualquer servidor e desbloqueá-la conectando-a a um cliente que já tenha a chave privada. Quando os dois coincidem, o sistema é desbloqueado sem a necessidade de senha. Você pode aumentar ainda mais a segurança protegendo a chave privada com uma senha.

Dentro de alguns dos comandos encontrados neste tutorial, você notará alguns valores destacados. Essas são variáveis e você deve substituí-las por seus próprios valores.

 

Como o comando ssh-copy-id funciona

O ssh-copy-id usa o protocolo SSH para conectar-se ao host de destino e fazer upload da chave do usuário SSH. O comando edita o arquivo allowed_keys no servidor. Ele cria o diretório .ssh, se não existir. Ele também cria o arquivo de chaves autorizadas se ele não existir. Efetivamente, a chave ssh foi copiada para o servidor.

Posteriormente o comando verifica se a chave já existe no servidor. A menos que a opção -f seja fornecida, cada chave é adicionada apenas ao arquivo de chaves autorizadas uma vez.

Além disso, garante que os arquivos principais tenham permissões apropriadas. Geralmente, o diretório inicial do usuário ou qualquer arquivo ou diretório que contenha arquivos de chaves não deve ser escrito por mais ninguém. Caso contrário, alguém poderá adicionar novas chaves autorizadas para o usuário e obter acesso. Os arquivos de chave privada não devem ser lidos por mais ninguém.

 

Criar o par de chaves RSA

A primeira etapa é criar o par de chaves na máquina cliente:

$ ssh-keygen -t rsa

 

Armazenar as chaves e a senha

Depois de inserir o comando ssh-keygen, você terá mais algumas perguntas:

Enter file in which to save the key (/home/alexandre.medeiros/.ssh/id_rsa):

Você pode pressionar enter aqui, salvando o arquivo na home do usuário (neste caso, meu exemplo de usuário é chamado alexandre.medeiros).

Enter passphrase (empty for no passphrase):

Cabe a você decidir se deseja usar uma senha. A inserção de uma senha tem seus benefícios: a segurança de uma chave, não importa quão criptografada, ainda depende do fato de que não é visível para mais ninguém.

Se uma chave privada protegida por senha passar a pertencer a usuários não autorizados, eles não poderão fazer login nas contas associadas até descobrirem a senha. A única desvantagem, é claro, de ter uma senha, é ter que digitá-la sempre que você usar o par de chaves.

Todo o processo de geração de chaves fica assim:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/alexandre.medeiros/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/alexandre.medeiros/.ssh/id_rsa.
Your public key has been saved in /home/alexandre.medeiros/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

A chave pública agora está localizada em /home/alexandre.medeiros/.ssh/id_rsa.pub. A chave privada (identificação) agora está localizada em /home/alexandre.medeiros/.ssh/id_rsa.

 

Copiar a chave pública para outro servidor

Depois que o par de chaves for gerado, é hora de colocar a chave pública no servidor que queremos usar.

Você pode copiar a chave pública para o novo arquivo allowed_keys da nova máquina com o comando ssh-copy-id. Certifique-se de substituir o nome de usuário e o endereço IP do exemplo abaixo.

$ ssh-copy-id -i ~/.ssh/id_rsa.pub alexandre.medeiros@198.168.100.222

O comando acima efetua login no host do servidor, copia as chaves para o servidor e as configura para conceder acesso adicionando-as ao arquivo allowed_keys. A cópia pode solicitar uma senha ou outra autenticação para o servidor.

Somente a chave pública é copiada para o servidor. A chave privada nunca deve ser copiada para outra máquina.

Como alternativa, você pode colar as chaves usando o também o comando SSH:

cat ~/.ssh/id_rsa.pub | ssh alexandre.medeiros@198.168.100.222 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"

 

Testar a nova chave

Após a cópia da chave devemos testar se a conexão SSH está OK:

ssh usuário@host

O login agora deve ser concluído sem solicitar uma senha. Observe, no entanto, que o comando pode solicitar a senha que você especificou para a chave.

 

Trubleshooting

Existem várias razões pelas quais o teste pode falhar:

  • O servidor pode não estar configurado para aceitar autenticação de chave pública. Verifique se /etc/ssh/sshd_config no servidor contém PubkeyAuthentication yes. Lembre-se de reiniciar o processo sshd no servidor.
  • Se estiver tentando efetuar login como root, o servidor pode não estar configurado para permitir login com o usuário root. Certifique-se de que o /etc/ssh/sshd_config inclua PermitRootLogin yes, PermitRootLogin prohibit-password ou without-password. Se estiver definida como somente forced-commands-only, a chave deverá ser configurada manualmente para usar um comando forçado (consulte command = option em ~/.ssh/allowed_keys.
  • Verifique se o cliente permite autenticação de chave pública. Verifique se /etc/ssh/config inclui PubkeyAuthentication yes.
  • Tente adicionar a opção -v ao comando ssh usado para o teste. Leia a saída para ver o que diz sobre se a chave foi tentada e quais métodos de autenticação o servidor está disposto a aceitar.
  • O OpenSSH permite apenas um máximo de cinco chaves para serem testadas automaticamente. Se você tiver mais chaves, deverá especificar qual chave usar usando a opção -i no ssh.

 

Fonte:
https://www.ssh.com/ssh/copy-id
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys–2