SSH-KEYS - Chaves criptogradas

From DreamsIT

Ssh.png

Esse processo deve acontecer se você quiser inserir sua chave pública criptografada ao seu servidor caso não tenha sido criada logo na criação do seu droplet na digitalocean...


24/09/2020


Verifique a chave baixada ou as chaves existentes[edit | hide all | hide | edit source]

ls ~/.ssh

ou

ls -al ~/.ssh

Em sistemas baseados em Unix, podem ser encontradas em ~/.ssh/identity, ~/.ssh/id_ecdsa, ~/.ssh/id_dsa ou ~/.ssh/id_rsa



Crie o par de chaves RSA[edit | hide | edit source]

Esse par de chaves são criadas na máquina client.

Rode o seguinte comando para o par de chave padrão de 2048 bits:

ssh-keygen


Caso deseje gerar chaves maiores com 4096 bits adicione a flag -b:

ssh-keygen -b 4096

Com email e tipo

ssh-keygen -t rsa -b 4096 -C "seuemail@example.com"

  • Parâmetro -t determina o tipo de chave, que no exemplo, usamos o algoritmo rsa, mas também poderia ser: rsa1, dsa e ecdsa.
  • Parâmetro -C põe um comentário à chave pública, contudo, o valor também pode ser: seu-usuário@hostname.
  • Parâmetro -b informa o total de bits. O default é 2048, e se quiser mais segurança use o valor máximo 4096.


Para ambos comandos acima, você será perguntado se deseja salvar no caminho padrão ou em outro.
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/sua-home/.ssh/id_rsa):


Escolha o melhor para si e aperte:

Enter


Caso já possua chaves criadas no mesmo lugar que escolheu, ele perguntará se você deseja sobrescrevê-las. Isso deverá ficar a seu critério.
Output
/home/sua-home/.ssh/id_rsa already exists.
Overwrite (y/n)?
Logo em seguida, crie uma senha para o seu novo par de chaves.
Output
Enter passphrase (empty for no passphrase):

Consequentemente, você terá uma saída similar:
Output
Your identification has been saved in /sua-home/.ssh/id_rsa.
Your public key has been saved in /sua-home/.ssh/id_rsa.pub.
The key fingerprint is:
a3:49:2a:1a:8e:23:3e:a9:de:4e:76:11:58:b6:97:26 seu-usuario@seu-host-remoto
The key's randomart image is:
+--[ RSA 4096]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+



Copie sua chave pública[edit | hide | edit source]

Copie sua chave pública para a máquina server com o seguinte comando:

ssh-copy-id nome-usuario@seu-host-remoto


Exemplo:

ssh-copy-id root@192.168.111.3


Caso o seu servidor não seja o host remoto que pertence a você mas, por exemplo, o github, há duas formas de fazer:

  • Mostrando no terminal e depois você copia e cola. Execute o comando: cat ~/.ssh/id-rsa.pub


  • Usando o xclip ( Siga estas intruções para a instalação do xclip se não o tiver instalado ): xclip -sel clip < ~/.ssh/id_rsa.pub


Se não tiver tentado acesso anterior aparecerá uma mensagem dessa e logo em seguida ponha yes.
Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is f2:fd:d4:f3:75:fe:73:84:e1:51:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes


Se você está aqui lendo estas informações, é possível que tenha criado uma senha para o root na criação do seu droplet. Então, nesse exato momento, ele pedirá, ainda pela senha que criou lá. Então a ponha:
Output
/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
seu-usuario@seu-host-remoto's password:
E aperte Enter


Então você terá a saída indicando que sua chave foi adicionada:
Output
Number of key(s) added: 1

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

Caso queira comparar as chaves do client e do server ou apenas verificar onde ela foi adicionada, verifique no server:

nano .ssh/authorized_keys

Faça a autenticação no servidor remoto[edit | hide | edit source]

Use o seguinte comando:

ssh seu-usuario@seu-host-remoto

Após isso, sendo a primeira vez que esteja acessando, só digite yes.

Hipoteticamente, você deveria conseguir acessar sem o uso da senha do root ou de seu usuário. Mas pode ser que ele continue pedindo a senha de seu usuario do servidor remoto. Abaixo veremos como resolver essa situação.


Resolvendo possíveis erros[edit | hide | edit source]

Possivelmente você se depare com erros como:

sign_and_send_pubkey: signing failed: agent refused operation

e

Permission denied (publickey)

Não se desepere, conseguiremos resolver acredito se seu caso apresente essas mensagens de falha e negação.

Solução[edit | hide | edit source]

Primeiro, desabilite o uso da senha em seu servidor:

nano /etc/ssh/sshd_config ou se não for root use sudo nano /etc/ssh/sshd_config.


E mude PasswordAuthentication no para PasswordAuthentication yes.

Reinicie o serviço sshd:

systemctl restart ssh ou sudo systemctl restart ssh.

Logo em seguida, adicione a chave ao agente ssh na máquina cliente:

ssh-add

E confirme:

ssh-add -l

Finalmente, é possível que consiga acessar sem a necessidade de senha. Se não tiver conseguido, reveja e re-execute os passos acima. Ou então tente algo diferente como dar permissões:

chmod 700 ~/.ssh

chmod 600 ~/.ssh/*

Talvez você tenha criado o diretório .ssh em outro lugar ou criou algum outro diretório. Espero que tenha ajudado.

E se ainda quando reiniciar a máquina e for tentar se autenticar e der erro de Permission denied (publickey)

tente refazer estes passos:

ssh-add

E confirme:

ssh-add -l


Sobre criação de usuário não-root[edit | hide | edit source]

Verfique aqui.








Autor: Pfyh.





Se você gosta do meu conteúdo, considere comprar um café para mim ou se desejar, me dê um apoio.