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

Leve a segurança cibernética a sério e use as chaves SSH para acessar logins remotos. Eles são uma forma 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 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 um robusto frase-senha.

  Como usar o comando lsof do Linux

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, essa mensagem criptografada contém a ID da sessão que foi recebida 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.

Certifique-se de que 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 até ter verificado que pode usar SSH com senhas para se conectar ao computador de destino.

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

Eles inserem o seguinte comando:

ssh [email protected]

É solicitada a senha deles, eles a inserem e são conectados à Sulaco. Seu prompt de linha de comando muda para confirmar isso.

Essa é toda a confirmação de que precisamos. Assim, o usuário dave pode se desconectar da Sulaco com o comando exit:

exit

Eles recebem a mensagem de desconexão e o prompt da linha de comando retorna para [email protected]

  Como instalar o editor de vídeo Vidiot no Linux

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.

Para gerar suas chaves SSH, digite o seguinte comando:

ssh-keygen

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.

Agora será solicitada uma senha longa. É altamente recomendável inserir 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 por três ou quatro palavras não conectadas, unidas, formará uma frase secreta muito robusta.

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ê.

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 muda, e suspeite da conexão porque isso significa que as chaves SSH daquele servidor foram alteradas.

Instalando a chave pública

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

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

ssh-copy-id [email protected]

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.

  Como instalar o Arch Linux

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.

Quando a senha é verificada, ssh-copy-id transfere 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.

Conexão usando chaves SSH

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

ssh [email protected]

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.

Digite sua senha e clique no botão Desbloquear.

Depois de inserir sua 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 inserir 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 seu computador sem supervisão, qualquer pessoa poderá fazer conexões com os computadores remotos que possuem sua chave pública.

Depois de inserir sua senha, você será conectado ao computador remoto.

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

ssh [email protected]

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 menos segurança e a 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.