Como criar chaves SSH com OpenSSH no macOS, Linux ou Windows Subsistema para Linux
Introdução
Ao configurar um servidor Linux remoto, você precisará decidir um método para conectar-se a ele com segurança. Embora as senhas sejam uma forma de verificar a identidade de um usuário, as senhas têm múltiplas vulnerabilidades e podem ser quebradas por um ataque de força bruta. Chaves Shellseguras — mais conhecidas como chaves SSH — são frequentemente usadas em vez de senhas, pois oferecem um método mais seguro de conexão com servidores Linux remotos. Como parte do protocolo de rede criptográfica Secure Shell, as chaves SSH também permitem que os usuários executem serviços de rede com segurança em uma rede não segura, como entregar comandos baseados em texto a um servidor remoto ou configurar seus serviços.
Este tutorial irá guiá-lo pelas etapas de criação de chaves SSH com OpenSSH, um conjunto de ferramentas SSH de código aberto, no macOS e Linux, bem como no Windows por meio do uso do subsistema Windows para Linux. Ele foi escrito para um público que está apenas começando com a linha de comando e fornecerá orientação sobre como acessar o terminal em um computador pessoal. Depois de concluir este tutorial, você terá chaves SSH que podem ser usadas para configurar um servidor com segurança no tutorial Como configurar um servidor Ubuntu em um Droplet DigitalOcean que faz parte do Currículo de Introdução ao Cloud.
Se você já está familiarizado com a linha de comando e procura instruções sobre como usar SSH para se conectar a um servidor remoto, consulte nossa coleção de tutoriais sobre como configurar chaves SSH para vários sistemas operacionais Linux.
Como criar chaves SSH com OpenSSH no macOS, Linux ou Windows Subsistema para Linux
- Compreendendo as chaves SSH
- Abrindo um terminal em seu computador
- Gerando chaves com OpenSSH
Pré-requisitos
Para concluir este tutorial, você precisará de:
- Uma máquina local executando um dos seguintes sistemas operacionais: macOS, Linux ou Windows com o subsistema Windows para Linux instalado. Se estiver usando Windows, você pode encontrar instruções para baixar ou atualizar o subsistema Windows para Linux na página de documentação da Microsoft. Observe que, embora o OpenSSH deva funcionar para uma variedade de distribuições Linux, este tutorial foi testado usando o Ubuntu.
Observação: Se você estiver procurando instruções sobre como criar chaves SSH em uma máquina Windows que não tenha o subsistema Windows para Linux, visite nossa documentação do produto Como criar chaves SSH com PuTTY no Windows.
- Alguma familiaridade em trabalhar com um terminal e linha de comando. Se precisar de uma introdução ao trabalho com terminais e linha de comando, você pode visitar nosso guia A Linux Command Line Primer.
Passo 1 — Compreendendo as chaves SSH
As chaves SSH são duas longas sequências de caracteres que podem ser usadas para autenticar a identidade de um usuário que solicita acesso a um servidor remoto. O usuário gera essas chaves em seu computador local usando um utilitário SSH. Uma chave é privada e armazenada na máquina local do usuário. A outra chave é pública e compartilhada com o servidor remoto ou qualquer outra entidade com a qual o usuário deseje se comunicar de forma segura.
Quando um usuário solicita conexão a um servidor com SSH, o servidor envia uma mensagem criptografada com a chave pública que só pode ser descriptografada pela chave privada associada. A máquina local do usuário usa então sua chave privada para tentar descriptografar a mensagem. Se a mensagem for descriptografada com sucesso, o servidor concede acesso ao usuário sem a necessidade de senha. Uma vez autenticados, os usuários podem iniciar uma sessão shell remota em seu terminal local para entregar comandos baseados em texto ao servidor remoto.
Na próxima etapa, você abrirá um terminal em seu computador para poder acessar o utilitário SSH usado para gerar um par de chaves SSH.
Passo 2 — Abrindo um terminal no seu computador
Um terminal permite que você interaja com seu computador por meio de comandos baseados em texto, em vez de uma interface gráfica de usuário. A forma como você acessa o terminal em seu computador dependerá do tipo de sistema operacional que você está usando.
Em máquinas que executam macOS, o aplicativo Terminal normalmente está localizado na pasta Utilitários, dentro da pasta Aplicativos. Você também pode encontrá-lo pesquisando por “terminal” no Search Spotlight.
Se você estiver trabalhando em um computador Linux, o aplicativo de terminal padrão da sua distribuição também está normalmente localizado na pasta Utilities
dentro da pasta Applications
. Você também pode encontrá-lo procurando por “terminal” com a funcionalidade de pesquisa do Desktop.
Se você estiver trabalhando em uma máquina Windows executando o subsistema Windows para Linux, um terminal Linux deverá abrir imediatamente após a instalação. Você também pode encontrá-lo pesquisando “Ubuntu” com a funcionalidade de pesquisa do Desktop.
Depois de localizar o aplicativo de terminal do seu sistema, abra uma nova janela de terminal. Seu terminal deve exibir seu nome de usuário, um cifrão ($
) e um cursor. É aqui que você começará a digitar comandos para informar ao terminal o que fazer.
Na próxima etapa, você inserirá um comando baseado em texto para gerar um par de chaves SSH.
Passo 3 — Gerando chaves com OpenSSH
Seu sistema operacional macOS ou Linux já deve ter o conjunto padrão de ferramentas OpenSSH instalado. Este conjunto inclui o utilitário ssh-keygen,
que você usará para gerar um par de chaves SSH.
Digite o seguinte comando em seu terminal:
ssh-keygen
Você será solicitado a selecionar um local para as chaves. Por padrão, as chaves são armazenadas no diretório ~/.ssh
com os nomes de arquivo id_rsa
para a chave privada e id_rsa.pub
para a pública. chave. Usar os locais padrão permite que seu cliente SSH encontre automaticamente suas chaves SSH durante a autenticação, portanto, recomendamos aceitar essas opções padrão. Para fazer isso, pressione ENTER
:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_rsa):
<$>[aviso] Aviso: Se você já gerou um par de chaves anteriormente, será solicitado que você confirme se realmente deseja substituir a chave existente:
/home/sammy/.ssh/id_rsa already exists.
Overwrite (y/n)?
Se você optar por substituir a chave no disco, não poderá mais autenticar usando a chave anterior. Selecionar “sim” é um processo destrutivo irreversível.
Se tiver certeza de que deseja substituir a chave existente no disco, você pode fazer isso pressionando Y
e depois ENTER
. <$>
Se você escolher o local padrão, sua chave pública estará localizada em /home/sammy/.ssh/id_rsa.pub
e sua chave privada estará localizada em /home/sammy/.ssh/id_rsa
. Observe que no caminho do arquivo, `sammie será substituído pelo seu nome de usuário.
Depois de selecionar um local para a chave, você será solicitado a inserir uma senha opcional que criptografe o arquivo da chave privada no disco.
Se você inserir uma senha, terá que fornecê-la sempre que usar essa chave (a menos que esteja executando um software de agente SSH que armazene a chave descriptografada). Recomendamos o uso de uma senha, mas você pode simplesmente pressionar ENTER
para ignorar este prompt:
Created directory '/home/sammy/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Seguindo esse prompt final, seu sistema irá gerar o par de chaves SSH:
Your identification has been saved in /home/sammy/.ssh/id_rsa.
Your public key has been saved in /home/sammy/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:EX:AM:PL:E3:3e:a9:de:4e:77:11:58:b6:90:26 sammy@203.0.113.0
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+
Agora você tem uma chave pública e privada que pode usar para autenticar.
Conclusão
Parabéns, você gerou um par de chaves SSH. Essas chaves podem ser usadas para conectar-se com segurança a um servidor remoto e são necessárias para o tutorial Como configurar um servidor Ubuntu em um Droplet DigitalOcean que segue este tutorial na introdução ao currículo de nuvem.
Para se aprofundar no trabalho com SSH, visite nosso guia SSH Essentials: Working With SSH Servers, Clients, and Keys.