Geração de chaves SSH


Use o comando ssh-keygen para criar um par de chaves. Por padrão, o comando ssh-keygen salva suas chaves privadas e públicas nos arquivos ~/.ssh/id_rsa e ~/.ssh/id_rsa.pub, mas você pode especificar um nome diferente.

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vxutUNPio3QDCyvkYm1 user@host.lab.example.com
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+

Você pode optar por fornecer uma senha para ssh-keygen, que é usada para criptografar sua chave privada. O uso de uma senha é recomendado para que sua chave privada não possa ser usada por alguém que tenha acesso a ela. Se você definir uma senha, deverá inseri-la toda vez que usar a chave privada. A senha é usada localmente para descriptografar sua chave privada antes do uso, ao contrário de sua senha, que deve ser enviada em texto não criptografado pela rede para uso.

Você pode usar o gerenciador de chaves ssh-agent localmente, que armazena sua senha em cache no primeiro uso em uma sessão de login e, em seguida, fornece a senha para todos os usos de chave privada subsequentes na mesma sessão de login. O comando ssh-agent é discutido mais tarde nesta seção.

No exemplo a seguir, uma chave privada protegida por senha é criada com a chave pública.

[user@host ~]$ ssh-keygen -f .ssh/key-with-pass
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): your_passphrase
Enter same passphrase again: your_passphrase
Your identification has been saved in .ssh/key-with-pass.
Your public key has been saved in .ssh/key-with-pass.pub.
The key fingerprint is:
SHA256:w3GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo user@host.lab.example.com
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

O comando ssh-keygen -f especifica os arquivos nos quais salvar as chaves. No exemplo anterior, o comando ssh-keygen salvou o par de chaves nos arquivos /home/user/.ssh/ key-with-pass e /home/user/.ssh/key-with-pass.pub.

Durante o uso do novo comando ssh-keygen, se você especificar o nome de um par de arquivos de chaves existente, incluindo o par padrão id_rsa, substituirá esse par de chaves existente, que só pode ser restaurado se você tiver um backup para esses arquivos. A substituição de um par de chaves perderá a chave privada original, que é necessária para acessar as contas que você configurou com a chave pública correspondente em servidores remotos.

Se você não conseguir restaurar sua chave privada local, perderá o acesso aos servidores remotos até que distribua sua nova chave pública para substituir a chave pública anterior em cada servidor. Sempre crie backups de suas chaves caso elas sejam substituídas ou perdidas.

As chaves SSH geradas são armazenadas, por padrão, no subdiretório .ssh de seu diretório pessoal. Para funcionar corretamente, a privada deve ser legível apenas pelo proprietário, o que é um modo de permissão 600. As chaves públicas podem ser lidas por qualquer pessoa, o que normalmente é definido como um modo de permissão 644.

Referências