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-tkey_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.
Thekeyfingerprintis:SHA256:jcOqUBqhtfBcbSjybk1NtmaOXdZsPoEZQ7M2oZojrMQmackleaps.localThekey'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-iduser@serverip
Saída esperada:
/usr/bin/ssh-copy-id:INFO:Sourceofkey(s) tobeinstalled:"/Users/mackleaps/.ssh/id_rsa.pub"/usr/bin/ssh-copy-id:INFO:attemptingtologinwiththenewkey(s),tofilteroutanythatarealreadyinstalled/usr/bin/ssh-copy-id:INFO:1key(s) remaintobeinstalled--ifyouarepromptednowitistoinstallthenewkeysmackleaps@172.16.38.243's password: Number of key(s) added: 1Now 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.