Page cover image

Gerando par de chaves para a SSH

Podemos facilmente produzir em sistemas Linux Unix ou MacOs chaves ssh. Para isso devemos utilizar o comando ssh-keygen diretamente no terminal da seguinte forma:

ssh-keygen -t key_type

Alguns tipos comuns são RSA, DSA, ECDSA, EdSA e ECMQV.

Posteriormente o sistema irá perguntar em qual local gostaríamos de salvar nossa chave. Podemos manter o padrão ou definir um nome diferente. Por fim, o sistema questiona se gostaríamos de adicionar uma senha a ser informada antes de utilizar a chave, podemos inclusive deixar o campo vazio e apenas confirmar com a tecla enter. A seguinte saída deve ser observada.

The key fingerprint is:
SHA256:jcOqUBqhtfBcbSjybk1NtmaOXdZsPoEZQ7M2oZojrMQ mackleaps.local
The key's randomart image is:
+---[RSA 3072]----+
|        +        |
|     o o +       |
|o + o * *        |
|.X = B + @       |
|.EO * = S *      |
|.o B B + + .     |
|. = o +   o      |
| . . .     .     |
|    .            |
+----[SHA256]-----+

Podemos ir então ao diretório onde as chaves são armazenadas:

cd /~/.ssh
Pasta .ssh no client

Podemos observar que 2 chaves foram criadas sendo uma pública (.pub) e outra privada. A chave pública deverá então ser armazenada no servidor ao qual se pretende acessar remotamente enquanto a privada deve permanecer armazenada em um local seguro sem ser compartilhada.

Em sistemas Windows um processo semelhante pode ser realizado utilizando o Powershell, Git Bash ou então utilizando ferramentas especificas como o PuTTygen.

Configurando as chaves SSH no servidor

Com as chaves geradas podemos agora copiar a chave publica para o servidor através do comando a seguir:

ssh-copy-id user@serverip

Saída esperada:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/mackleaps/.ssh/id_rsa.pub"
/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
mackleaps@172.16.38.243's password: 

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'mackleaps@172.16.38.243'"
and check to make sure that only the key(s) you wanted were added.

A chave adicionada pode então ser encontrada no arquivo authorized_keys do diretório .ssh do servidor.

cat authorized_keys 
# GUSTAVO
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBORWaLGrhfK3iCsbxie7TfBU8x7u/+vyXEmlvOtrrqGCJ+cryxfxqxlBHvYn3R5twh8BeajBZ2Fj07CaSryexoI= ggarabs
#Alvaro
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHOBqgI+3g7/Y5rsj0FnbNYLQJiGWFZKUjGQAxQev15W+1ytqvUMAjDw5yw7WJxEfvMLhCi5to1w32pmGbd3YaCZsEm1yVwjL67+o+ZAgrhkKyeN1iwncT0tfNgzk9dKxjqQXeyUta6BvRPLcyh37FUhG48ugskwiGpI1S7+wS9/0xa+bnVGHWldrxTB62Df2Kaie9/L+ZI9YKq+SWNhn/QuYaO0X5MAiNwYbG+BEeeTw+4OPRDobfxnYFACC5tXzsKdZmub2FxZ/4bXYZ24yOxx/mR0ScuMR9amLn4IwoKfuF/EUQrxqaDiXBVZKvuC1fhaAwQLhEKLhM6HNJIJOLuPnz0YOoajLYLdtDpvEbrpuiaLH71A7lmkIY6mVdA92XwP92WAozItiD7OdJ2g91ps900hrYHr4Do1W+XBNLoT6ZcBZf+zT9j9SA1bqvGbfAYuWaJd++qujylcWXys09wIsEkC4gtGiT2j55Q1chToLOUFWKriAYAwT7FOaRO48= Alvaro

Podemos agora acessar o servidor utilizando tanto a passagem da chave privada diretamente no comando da ssh ou utilizando o SSH Agent.

ssh -i ~/ssh/id_rsa mackleaps@server_ip

Ou então

eval $(ssh-agent -s)
ssh-add ~/.ssh/my_private_key
ssh mackleaps@server_ip -p 22 -A

Mais informações:

Last updated