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
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.