Como criar e instalar chaves SSH a partir do shell do Linux

Laptop Linux mostrando um prompt de shell
Fatmawati Achmad Zaenuri / Shutterstock.com

Leve a segurança cibernética a sério e use as chaves SSH para acessar logins remotos. Eles são uma maneira mais segura de se conectar do que senhas. Mostramos como gerar, instalar e usar chaves SSH no Linux.

O que há de errado com as senhas?

Secure shell (SSH) é o protocolo criptografado usado para fazer login em contas de usuário em computadores remotos com Linux ou Unix . Normalmente, essas contas de usuário são protegidas por meio de senhas. Ao fazer login em um computador remoto, você deve fornecer o nome de usuário e a senha da conta na qual está fazendo login.

As senhas são o meio mais comum de proteger o acesso aos recursos de computação. Apesar disso, a segurança baseada em senha tem suas falhas. As pessoas escolhem senhas fracas, compartilham senhas, usam a mesma senha em vários sistemas e assim por diante.

As chaves SSH são muito mais seguras e, uma vez configuradas, são tão fáceis de usar quanto as senhas.

O que torna as chaves SSH seguras?

As chaves SSH são criadas e usadas em pares. As duas chaves são vinculadas e criptograficamente seguras. Uma é a sua chave pública e a outra é a sua chave privada. Eles estão vinculados à sua conta de usuário. Se vários usuários em um único computador usarem chaves SSH, cada um receberá seu próprio par de chaves.

Sua chave privada é instalada em sua pasta pessoal (geralmente), e a chave pública é instalada no computador remoto – ou computadores – que você precisará acessar.

Sua chave privada deve ser mantida em segurança. Se ela estiver acessível a outras pessoas, você está na mesma posição como se elas tivessem descoberto sua senha. Uma precaução sensata – e altamente recomendada – é que sua chave privada seja criptografada em seu computador com uma senha forte .

Recomendado:  Como usar gestos do touchpad para Windows 10

A chave pública pode ser compartilhada livremente sem comprometer sua segurança. Não é possível determinar o que é a chave privada a partir de um exame da chave pública. A chave privada pode criptografar mensagens que apenas a chave privada pode descriptografar.

Quando você faz uma solicitação de conexão, o computador remoto usa sua cópia de sua chave pública para criar uma mensagem criptografada. A mensagem contém um ID de sessão e outros metadados. Apenas o computador em posse da chave privada – seu computador – pode descriptografar esta mensagem.

Seu computador acessa sua chave privada e descriptografa a mensagem. Em seguida, ele envia sua própria mensagem criptografada de volta ao computador remoto. Entre outras coisas, esta mensagem criptografada contém o ID da sessão que foi recebido do computador remoto.

O computador remoto agora sabe que você deve ser quem diz ser, porque apenas a sua chave privada poderia extrair o ID da sessão da mensagem enviada ao seu computador.

Verifique se você pode acessar o computador remoto

Certifique-se de que você pode se conectar remotamente e fazer login no computador remoto . Isso prova que seu nome de usuário e senha têm uma conta válida configurada no computador remoto e que suas credenciais estão corretas.

Não tente fazer nada com as chaves SSH antes de verificar se você pode usar SSH com senhas para se conectar ao computador de destino.

Neste exemplo, uma pessoa com uma conta de usuário chamada daveestá conectada a um computador chamado howtogeek. Eles vão se conectar a outro computador chamado Sulaco.

Eles inserem o seguinte comando:

ssh dave @ sulaco

ssh dave @ sulaco em uma janela de terminal

É solicitada a senha, eles a inserem e se conectam à Sulaco. Seu prompt de linha de comando muda para confirmar isso.

usuário dave se conectou ao sulaco usando ssh e uma senha

Essa é toda a confirmação de que precisamos. Assim, o usuário davepode se desconectar Sulacocom o exitcomando:

Saída

usuário dave desconectado do sulaco

Eles recebem a mensagem de desconexão e o prompt da linha de comando retorna para dave@howtogeek.

Criação de um par de chaves SSH

Essas instruções foram testadas nas distribuições Ubuntu, Fedora e Manjaro do Linux. Em todos os casos, o processo foi idêntico e não houve necessidade de instalar nenhum novo software em nenhuma das máquinas de teste.

Recomendado:  O alfabeto de atalhos do Windows 11: 52 atalhos de teclado essenciais

Para gerar suas chaves SSH, digite o seguinte comando:

ssh-keygen

ssh-keygen em uma janela de terminal

O processo de geração começa. Você será questionado onde deseja que suas chaves SSH sejam armazenadas. Pressione a tecla Enter para aceitar o local padrão. As permissões na pasta irão protegê-la apenas para seu uso.

Confirmação do local de armazenamento da chave ssh em uma janela de terminal

Agora será solicitada uma senha longa. Recomendamos enfaticamente que você insira uma senha longa aqui. E lembre-se do que é! Você pode pressionar Enter para não ter uma senha longa, mas isso não é uma boa ideia. Uma frase secreta composta de três ou quatro palavras não conectadas, unidas, formará uma frase secreta muito robusta.

Solicita a senha em uma janela de terminal

Você será solicitado a digitar a mesma senha mais uma vez para verificar se digitou o que pensou ter digitado.

As chaves SSH são geradas e armazenadas para você.

Geração de chaves concluída e arte aleatória exibida em uma janela de terminal

Você pode ignorar o “randomart” que é exibido. Alguns computadores remotos podem mostrar sua arte aleatória sempre que você se conectar. A ideia é que você reconheça se a arte aleatória mudar, e suspeite da conexão porque isso significa que as chaves SSH desse servidor foram alteradas.

Instalando a chave pública

Precisamos instalar sua chave pública no Sulacocomputador remoto, para que ele saiba que a chave pública pertence a você.

Fazemos isso usando o ssh-copy-idcomando. Este comando faz uma conexão com o computador remoto como o sshcomando regular , mas em vez de permitir que você efetue login, ele transfere a chave SSH pública.

ssh-copy-id dave @ sulaco

ssh-copy-id dave @ sulaco

Embora não esteja efetuando login no computador remoto, você ainda deve autenticar usando uma senha. O computador remoto deve identificar a qual conta de usuário a nova chave SSH pertence.

Observe que a senha que você deve fornecer aqui é a senha da conta de usuário na qual você está fazendo login. Esta não é a senha que você acabou de criar.

Recomendado:  Carregar o telefone afeta o consumo de combustível?

ssh-copy-id com prompt de senha em uma janela de terminal

Quando a senha for verificada, ssh-copy-idtransfere sua chave pública para o computador remoto.

Você retornará ao prompt de comando do seu computador. Você não fica conectado ao computador remoto.

chave pulic transferida com sucesso em uma janela de terminal

Conexão usando chaves SSH

Vamos seguir a sugestão e tentar conectar ao computador remoto.

ssh dave @ sulaco

ssh dave @ sulaco em uma janela de terminal

Como o processo de conexão exigirá acesso à sua chave privada e como você protegeu suas chaves SSH atrás de uma senha, você precisará fornecer sua senha para que a conexão possa prosseguir.

caixa de diálogo de solicitação de senha

Digite sua senha e clique no botão Desbloquear.

Depois de inserir sua frase-senha em uma sessão de terminal, você não terá que inseri-la novamente enquanto estiver com a janela do terminal aberta. Você pode se conectar e desconectar de quantas sessões remotas desejar, sem digitar sua senha novamente.

Você pode marcar a caixa de seleção para a opção “Desbloquear esta chave automaticamente sempre que estiver conectado”, mas isso reduzirá sua segurança. Se você deixar o seu computador sem supervisão, qualquer pessoa pode fazer conexões com os computadores remotos que possuem sua chave pública.

Depois de inserir sua senha, você se conecta ao computador remoto.

conexão de computador remoto em uma janela de terminal

Para verificar o processo mais uma vez de ponta a ponta, desconecte com o exitcomando e reconecte ao computador remoto na mesma janela de terminal.

ssh dave @ sulaco

conexão de chave ssh e desconexão em uma janela de terminal

Você será conectado ao computador remoto sem a necessidade de uma senha ou frase secreta.

Sem senhas, mas com segurança aprimorada

Os especialistas em segurança cibernética falam sobre uma coisa chamada atrito de segurança. Essa é a pequena dor que você precisa suportar para obter o ganho de segurança adicional. Geralmente, há uma ou duas etapas extras necessárias para adotar um método de trabalho mais seguro. E a maioria das pessoas não gosta disso. Na verdade, eles preferem menor segurança e falta de atrito. Essa é a natureza humana.

Com as chaves SSH, você obtém mais segurança e mais conveniência. Isso é uma vitória definitiva.