Como criar uma chave SSH no Linux
O SSH (Secure Shell), também conhecido como Secure Socket Shell, é um protocolo/aplicação que permite, de forma segura, aceder remotamente, através de um PC ou outro dispositivo a outros equipamentos. Para nos autenticarmos no dispositivo de destino usamos normalmente um utilizador/password mas essa autenticação pode ser simplesmente feita através de uma "chave SSH".
Hoje mostramos-lhe como pode passar a usar, no seu dia-a-dia, ligações remotas recorrendo ao SSH sem ter que usar passwords.
SSH sem passwords? Sim, é possível!
O processo envolve gerar uma chave SSH na máquina de origem e depois partilhá-la com os computadores a partir das quais pretende efetuar o Log In para aceder à máquina. Isto irá permitir que qualquer pessoa que tem a chave faça Log in sem utilizar passwords.
O que é uma chave SSH?
Uma chave SSH, dito de uma forma fácil para ser igualmente fácil de perceber, é um simples ficheiro e uma identificação única que pode ser usada na Secure Shell. Acima de tudo, estas chaves são uma maneira de classificar um determinado utilizador como “Confiável” para permitir que o Log in seja efetuado de forma segura. Na verdade, SSH permite que um utilizador faça Log in com esta chave segura em vez de necessitar de uma password.
Gerar chaves SSH…
Para gerar uma chave SSH segura, em primeiro lugar é necessário que tenha tenha instalado o SSH (Secure Shell). Caso não tenha, execute o seguinte comando:
sudo apt-get install openssh-server |
Deve gerar sempre as chaves SSH no sistema que possuí o servidor SSH.
Para iniciar o processo de criação das chaves deve abrir o terminal e executar o comando:
ssh-keygen -t rsa |
Ao executar o comando ssh-keygen irá aparecer no ecrã “Generating public/private rsa key par”. Primeiro devem indicar onde vão guardar as chaves (id_rsa e id_rsa.pub). Depois basta indicar uma passphrase para que as chaves sejam geradas.
Não percebeu a parte em que aparece public/private? Bem, nós explicamos-lhe.
Isto significa que o sistema está a gerar uma parte de chaves única, que consiste numa chave pública e numa chave privada. A chave pública deve ser aquela que deve sentir-se à vontade em partilhar. Por outro lado, a chave privada é algo que deve guardar com muito cuidado e nunca partilhá-la com ninguém. Daí o nome “privada”.
De seguida deve inserir o nome do ficheiro em que quer guardar a sua chave privada.
Depois de ter feito isso deve inserir uma password para gerar o seu par de chaves. Assegure-se de que não se esquece da sequência de carateres que inseriu.
Deverão aparecer-lhe 2 novos ficheiros no seu diretório /home/
O que fazer com as chaves?
Agora que as chaves estão criadas e prontas a utilizar é necessário adicioná-las ao sistema em que pretende fazer Log in.
Como tal, deve utilizar este comando:
ssh username@nome-servidor-remoto mkdir -p .ssh |
Ao correr este comando ssh será criado um diretório ~/.ssh no diretório home.
Em seguida, para copiar as chaves para a máquina a partir da qual pretende efetuar o processo de Log in corra o comando:
cat .ssh/id_rsa.pub | ssh username@nome-servidor-remoto 'cat >> .ssh/authorized_keys' |
A cópia pode demorar alguns segundos dependendo da velocidade da sua ligação à Internet. Quando terminar, o computador para onde tentou passar as chaves já deverá ser capaz de efetuar Log in através de SSH sem necessitar da Password.
Faça o Backup das chaves…
Cada par de chaves SSH é único. Por isso, a melhor coisa a fazer deve ser ter um backup em algum lugar seguro. No entanto, corre sempre o risco de alguém as descobrir e começar a usá-las. Para evitar esta situação deve utilizar encriptação.
Para o ajudar com o processo siga estes dois ótimos tutoriais do Pplware:
Em primeiro lugar deve comprimir o diretório ~/.ssh e depois encriptá-lo evitando assim ter que cifrar cada um dos ficheiros um a um.
Conclusão
Sem dúvida, SSH é uma ferramenta extremamente útil para quem quer comunicar com outra máquina de forma segura e sem comprometimentos. Esperemos que este tutorial o venha a ajudar no seu quotidiano.
Este artigo tem mais de um ano
Para enviar as chaves para o servidor pode-se usar o comando ssh-copy-id. Este comando apenas copia a chave se a mesma não existir no servidor.
ssh-copy-id username@nome-servidor-remoto
Viva, apesar do bom artigo e ser algo “simples” de se criar para quem mexe.
Acho que neste ponto poderiam-se focar também noutras distros usadas , por exemplo Centos 7 ( Similar a RedHat ).
Outra maneira poderá ser esta :
ssh-keygen -t rsa -b 2048 -C “username@maquinadestino”
sh-copy-id username@maquinadestino
ssh username@maquinadestino
É apenas mais uma maneira decerteza que haverá outras ( esta fica no know_hosts na dir .ssh).
Excelente artigo, eu também utilizo para copiar a chave o seguinte comando
ssh-copy-id -i /home/username/.ssh/id_rsa.pub username@nome-servidor-remoto
Bom artigo, mas gostava de sugerir https://linux.die.net/man/1/ssh-copy-id , visto que simplifica muito o setup.
Bom artigo… não sabia que dava também para fazer RSA no SSH… acho que vou começar a usar isso no meu router…
so faria alguns crescentos no artigo:
1 – como desabilitar autenticação por password após a chave estar copiada para o servidor remoto. Usando a chave ssh, a password para aceder ao ssh deixa de ser necessária e é um risco de segurança no caso de bots e ataques de força bruta.
2 – Há outras chaves para além da RSA ex: Ed25519 https://wiki.archlinux.org/index.php/SSH_keys#Choosing_the_authentication_key_type
Mas tá fixe eu também andava a usar o ‘cat’ pa chutar a chave publica para o servidor 🙂
Boas,
grande dica aqui a numero 2 do Gekko…
Cump