Ssh-keygen é uma ferramenta para criar novos pares de chaves de autenticação para SSH. Esses pares de chaves são usados para automatizar logins, logon único e para autenticar hosts.
O protocolo SSH usa criptografia de chave pública para autenticar hosts e usuários. As chaves de autenticação, chamadas chaves SSH, são criadas usando o programa keygen.]
A autenticação de chave pública é mais segura que o antigo método de autenticação .rhosts. Foi melhorado a segurança ao evitar a necessidade de guardar senhas em arquivos e eliminou a possibilidade do roubo de senha do usuário. No entanto, as chaves SSH são também credenciais de autenticação, assim como as senhas. Portanto, essas chaves devem ser gerenciados de forma análoga aos nomes de usuário e senhas. Eles devem ter um processo de encerramento adequado para que as chaves sejam removidas quando não forem mais necessárias.
Criando um par de chaves SSH para autenticação do usuário
Ao executarmos somente ssh-keygen sem nenhum argumento serão geradas as chaves, o par de chaves, melhor dizendo.
Abaixo executei como a ferramenta ssh-keygen e foi solicitado que digitasse caminho e nome do arquivo/chave privado e público e uma senha. Lembra-se que é um par de chaves que é gerada, uma chave privada que deve ser mantida secreta e uma pública que, como o nome diz, posso publicar, mostrar para qualquer um. Na verdade essa chave pública com nome terminado em .pub deve ser levado para o servidor que queremos acessar.
maria@ti:~/ssh_testes$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/maria/.ssh/id_rsa): ./minha_chave.key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ./minha_chave.key Your public key has been saved in ./minha_chave.key.pub The key fingerprint is: SHA256:ggi2mT9vcx9KXqzXwtQepoy6kNEfvznd3c+4SJYqH/w maria@ti The key's randomart image is: +---[RSA 3072]----+ | | | | |.. | |..+... | | +.......S . | | . o ...+o + . | | = o==O * . .| | +ooo=B+X o +.| | .+=+o*= E o.+| +----[SHA256]-----+
veja as chaves geradas
maria@ti:~/ssh_testes$ ls minha_chave.key minha_chave.key.pub
Se eu não especificasse o caminho as chaves serial salvas dentro de /home/maria/.ssh/. No entanto, em ambientes corporativos, o local costuma ser diferente.
O nome do arquivo de chave padrão depende do algoritmo, neste caso, id_rsa ao usar o algoritmo RSA padrão. Também pode ser, por exemplo, id_dsa ou id_ecdsa.
É solicitado que forneçamos uma passphrase(frase secreta). A passphrasse é uma espécie de senha, só que mais longa, uma frase como o nome diz: frase secreta. Com essa senha, mesmo que alguém obtenha o arquivo de chave privada não poderá usá-la.
Escolhendo um Algoritmo e um Tamanho de Chave
O SSH oferece suporte a vários algoritmos de chave pública para chaves de autenticação. Esses incluem:
- rsa: um algoritmo antigo baseado na dificuldade de fatorar números grandes. Um tamanho de chave de pelo menos 2048 bits é recomendado para RSA; 4096 bits é melhor. RSA está envelhecendo e avanços significativos estão sendo feitos em factoring. A escolha de um algoritmo diferente pode ser aconselhável. É bem possível que o algoritmo RSA se torne praticamente quebrável em um futuro previsível. Todos os clientes SSH suportam este algoritmo.
- dsa: O DSA em sua forma original não é mais recomendado. É um antigo Algoritmo de Assinatura Digital do governo dos Estados Unidos. Baseia-se na dificuldade de calcular logaritmos discretos. Um tamanho de chave de 1024 normalmente seria usado com ele.
- ecdsa: um novo Algoritmo de Assinatura Digital padronizado pelo governo dos EUA, usando curvas elípticas. Este é provavelmente um bom algoritmo para aplicações atuais. Apenas três tamanhos de chave são suportados: 256, 384 e 521 (sic!) bits. Recomendamos sempre usá-lo com 521 bits, pois as chaves ainda são pequenas e provavelmente mais seguras do que as chaves menores (embora também devam ser seguras). A maioria dos clientes SSH agora oferece suporte a esse algoritmo.
- ed25519: este é um novo algoritmo adicionado no OpenSSH. O suporte para isso nos clientes ainda não é universal. Assim, seu uso em aplicações de uso geral pode ainda não ser aconselhável.
O algoritmo é escolhido usando a opção -t e o tamanho da chave usando a opção -b. Os seguintes comandos ilustram bem:
ssh-keygen -t rsa -b 4096 ssh-keygen -t dsa ssh-keygen -t ecdsa -b 521 ssh-keygen -t ed25519
Especificando o nome do arquivo
Normalmente, a ferramenta solicita o arquivo no qual armazenar a chave. No entanto, ele também pode ser especificado na linha de comando usando a opção -f <filename>.
ssh-keygen -f ~/minhaChave.key -t ecdsa -b 521
Copiando a chave pública para o servidor
Para usar a autenticação de chave pública, que trabalha com chaves duplas, sendo uma pública e outra privada(secreta), a chave pública deve ser copiada para um servidor, no qual queremos conectar, e instalada em um arquivo chamado authorized_keys. Isso pode ser feito convenientemente usando a ferramenta ssh-copy-id. Como isso:
ssh-copy-id -i ~/minhaChave.pub joao@192.168.4.34
O caminho da chave deve ser colocada através da opçãi -i
Aí vem seguido de nome de usuário e ip do servidor onde queremos inserir a chave pública: joao@192.168.4.34
Assim que a chave pública for configurada no servidor, o servidor permitirá que qualquer usuário conectado que tenha a chave privada faça login. Durante o processo de login, o cliente prova a posse da chave privada assinando digitalmente a troca de chaves.
Inserindo a Chave Pública Manualmente
Essa etapa é somente usada se você não quiser usar o ssh-copy-id que automatiza tudo.
A chave pública também pode ser colocada manualmente.
NO SEU PC QUE ACESSARÁ O OUTRO 🙂
No seu pc, onde foram geradas as duas chaves, abra a chave pública com seu editor preferido. Aqui usarei o comando cat no terminal:
maria@ti:~/ssh_testes$ cat minha_chave.key.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxKMaf4aQfbQgOBuAxofZSfrZ4iLC8+TATBnAo8JspKclbazYxd106fFhB0AYhslAhCWSf347Decc3Vjkko4fHAOgK9qlV2DhUaRKOh6mKcoclsmaDQcMN3UJgfS7su+Rx8nDNlRDKfbXaw19vUVd+5qmt40eAsKOxmLIt/3EofaQfEMN/0UQL7ISsqFxbajMdQ2GuvE4w8Px1M7OrkZNCZvQic7oxdMcDoT2evyXIJX6pgBYgdkYdkvktFYTY87CM7jN5eh3tLbF10xaSNhOOoEPZ9mUfTyHQeJaz9Nap1g5avtrB8Wp1aKrSvmz50upu6YcO6JVJVesTGmRKqLTs3JKDli6opQRQzwoz/LxRL4c9A3TL1Ei0h46H2J5dj7RXdilHkDJp0s5QkcEYEPJtpFOw+exXjHqkOG9MXcwLdwiBlm0QYn5lc1ch36Qq8cEwnkTcPa5R2aRG+PvRXGsPMyl3tn4Aeh5guzWsxQ/VnjfhFJ9rgORAQLGBw6ypwzU= maria@ti
Então, copie a chave pública, que em nosso caso é essa:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCxKMaf4aQfbQgOBuAxofZSfrZ4iLC8+TATBnAo8JspKclbazYxd106fFhB0AYhslAhCWSf347Decc3Vjkko4fHAOgK9qlV2DhUaRKOh6mKcoclsmaDQcMN3UJgfS7su+Rx8nDNlRDKfbXaw19vUVd+5qmt40eAsKOxmLIt/3EofaQfEMN/0UQL7ISsqFxbajMdQ2GuvE4w8Px1M7OrkZNCZvQic7oxdMcDoT2evyXIJX6pgBYgdkYdkvktFYTY87CM7jN5eh3tLbF10xaSNhOOoEPZ9mUfTyHQeJaz9Nap1g5avtrB8Wp1aKrSvmz50upu6YcO6JVJVesTGmRKqLTs3JKDli6opQRQzwoz/LxRL4c9A3TL1Ei0h46H2J5dj7RXdilHkDJp0s5QkcEYEPJtpFOw+exXjHqkOG9MXcwLdwiBlm0QYn5lc1ch36Qq8cEwnkTcPa5R2aRG+PvRXGsPMyl3tn4Aeh5guzWsxQ/VnjfhFJ9rgORAQLGBw6ypwzU= maria@ti
NO PC QUE SERÁ ACESSADO
No servidor que será acessado, abre o aquivo dentro do arquivo authorized_keys pertencente ao usuário joao, em: /home/joao/.ssh/authorized_keys
Se seu usuário fosse paulo então estaria dentro de /home/paulo/.ssh/authorized_keys
vim /home/joao/.ssh/authorized_keys
Com esse arquivo aberto, cole ao final, o texto que copiamos acima.
Acessando o Servidor para Onde Levamos a Chave Pública
Com as chaves conduzidas para seus devidos lugares, agora basta acessarmos o servidor ou pc onde colocarmos a chave pública.
Não é recomendado, mas se você não definiu uma senha ao criar a chave então o acesso será bem fácil, não solicitará nada. Será acesso direto.
Iremos acessar o servidor ou pc onde colocarmos nossa chave pública. Em meu cano, o servidor remoto possui o ip 192.168.4.34 e logarei nele usando o usuário joao que está criado já dentro desse servidor remoto.
Lembra que colocamos a chave privada dentro da minha pasta home: /home/maria/minhaChave.key é a mesma coisa que ~/minhaChave.key
Use a opção -i para indicar onde está a chave
maria@ti:~$ ssh -i ~/.minhaChave.key joao@192.168.4.34
Comment on “SSH: Usando ssh-keygen para Gerar Chaves SSH”