HowTo :: Acesso SSH usando chave GPG para autenticação
Prefácio
Muitos de nós já conhecemos o Secure Shell (SSH), que permite conectar a outros sistemas usando uma chave em vez de senha. Este guia explica como eliminar chaves SSH e usar uma subchave do GNU Privacy Guard (GPG) no lugar. Usar GPG não torna suas conexões SSH mais seguras. SSH é um protocolo seguro, e chaves SSH são seguras. Em vez disso, isso torna mais fácil certos aspectos de distribuição de chaves e gestão de backups. Também não muda seu workflow de uso do SSH. Todos os comandos continuarão funcionando como você espera, exceto que você não terá mais chaves privadas SSH, você vai desbloquear sua chave GPG.
Ao autenticar o SSH com sua chave GPG, você reduz o número de arquivos de chave que precisa proteger e fazer backup. Isso significa que sua higiene de gerenciamento de chaves precisa continuar boa, o que implica escolher boas passphrases e usar estratégias apropriadas de preservação de chaves. Lembre-se: você não deve fazer backup da sua chave privada na nuvem!
Além disso, hoje chaves SSH são distribuídas manualmente e muitas vezes diretamente. Se você quiser me dar acesso a uma máquina, precisa me pedir minha chave SSH. Você até pode encontrar uma publicada no meu site. Porém, ainda precisa decidir se confia no meu site. Se eu usar uma chave GPG para SSH, você pode selecionar uma chave conhecida e confiável para mim usando a web of trust do GPG a partir de um keyserver público. É nisso que o The Monkeysphere Project está trabalhando. Caso contrário, nada do que você fizer aqui afeta a web of trust usada para criptografia e assinatura com GPG.
O que é uma subchave GPG?
Uma chave GPG é, na verdade, um conjunto de chaves. Há uma chave primária, normalmente usada apenas para assinatura e certificação. A prática sugerida no uso do GPG é criar uma subchave para criptografia. Essa subchave é separada e, para todos os fins práticos, é assinada pela chave primária e transmitida ao mesmo tempo. Essa prática permite revogar a subchave de criptografia isoladamente, por exemplo se ela for comprometida, mantendo a chave primária válida. O importante é perceber que uma chave GPG contém múltiplas chaves. Para backup e armazenamento, você pode tratá-las como uma única chave, mas na hora de usar você pode utilizá-las de forma independente.
Este exercício vai usar uma subchave criada para autenticação para completar conexões SSH. Essa subchave de autenticação vai substituir completamente o par de chaves que você talvez tenha gerado no passado com ssh key-gen. Você pode criar quantas quiser caso precise de múltiplas chaves SSH.
Crie uma subchave de autenticação
Você já deve ter uma chave GPG. Se não tiver, leia algum dos muitos bons tutoriais disponíveis sobre o tema. Você vai criar a subchave editando sua chave existente. É preciso editar a chave no modo expert para acessar as opções corretas. O workflow adiciona uma nova chave onde você escolhe as capacidades, especificamente, você vai ativar apenas autenticação. O SSH normalmente usa uma chave RSA de 2048 bits que não expira (tipo 8 nas opções abaixo). Abaixo está uma versão editada do workflow. Todos os comandos foram testados no Fedora 29.
| |
Habilite a subchave GPG
Quando você usa SSH, um programa chamado ssh-agent gerencia as chaves. Para usar uma chave GPG, você vai usar um programa similar, o gpg-agent, que gerencia chaves GPG. Para fazer o gpg-agent atender requisições do SSH, você precisa habilitar suporte adicionando a linha enable-ssh-support no arquivo ~/.gnupg/gpg-agent.conf.
| |
Opcionalmente, você pode pré-definir quais chaves serão usadas no SSH para não precisar usar ssh-add para carregar as chaves. Para isso, especifique as chaves no arquivo ~/.gnupg/sshcontrol. As entradas nesse arquivo são keygrips, identificadores internos que o gpg-agent usa para referenciar chaves. Diferente de um hash de chave, um keygrip se refere tanto à chave pública quanto à privada. Para encontrar o keygrip, use gpg2 -K -with-keygrip, como mostrado abaixo. Depois adicione essa linha ao arquivo sshcontrol.
| |
Depois escreva o keygrip correspondente no arquivo sshcontrol
| |
Por fim, você precisa dizer ao SSH como acessar o gpg-agent. Isso é feito alterando o valor da variável de ambiente SSH_AUTH_SOCK. As duas linhas abaixo, quando adicionadas ao seu ~/.bashrc, garantem que a variável seja configurada corretamente e que o agent seja iniciado e pronto para uso.
| |
Para continuar, execute esses comandos na sua sessão atual.
Compartilhe sua chave SSH
Para usar SSH, você precisa compartilhar sua chave pública com o host remoto. Você tem duas opções. Primeiro, pode rodar ssh-add -L para listar suas chaves públicas e copiá-las manualmente para o host remoto. Você também pode usar ssh-copy-id. Do ponto de vista do SSH, nada mudou.
Parabéns!
Você agora habilitou o acesso SSH usando uma chave GPG para autenticação! O SSH continuará funcionando como esperado, e as máquinas às quais você se conecta não precisarão de mudanças de configuração. Você reduziu o número de arquivos de chave que precisa gerenciar e fazer backup com segurança, ao mesmo tempo em que habilitou a oportunidade de participar de diferentes formas de distribuição de chaves. Fique seguro e mantenha uma boa higiene de chaves!