O que é SSH Agent Forwarding e como usá-lo?

Funtap / Shutterstock
O encaminhamento de agente SSH permite que você use sua chave SSH local privada remotamente, sem se preocupar em deixar dados confidenciais no servidor com o qual está trabalhando. É integrado ao ssh e é fácil de configurar e usar.
O que é um Agente SSH?
Sua chave SSH pública é como seu nome de usuário ou identidade, e você pode compartilhá-la com todos. Sua chave SSH privada é como uma senha e é salva localmente no seu computador. Mas, isso é como armazenar suas senhas em um lembrete — qualquer pessoa pode vê-las se tiver acesso a ela. Portanto, por segurança, o SSH pedirá uma senha quando você gerar suas chaves (espero que você não tenha pulado essa etapa) e usará essa senha para criptografar e descriptografar sua chave privada.
No entanto, isso significa que você terá que inserir sua senha toda vez que precisar usar sua chave privada, o que será irritante. Para gerenciar isso, a maioria das implementações SSH usará um agente, que mantém sua chave descriptografada na memória. Isso significa que você só precisará desbloqueá-lo uma vez e ele persistirá até que você reinicie, permitindo que você faça login em seus servidores com segurança, sem a solicitação de uma frase secreta. Você vai querer ter certeza de que seu servidor SSH está bloqueado, é claro.
O que é SSH Agent Forwarding?
O encaminhamento do agente SSH é como ir mais fundo em outra camada. Por exemplo, imagine que você está se conectando a um servidor remoto e deseja fazer o git extrair algum código que está armazenando no Github. Você deseja usar a autenticação SSH para Github, mas não quer suas chaves privadas naquele servidor remoto, apenas em sua máquina.
Para resolver este problema, você pode abrir seu agente SSH local para o servidor remoto, permitindo que ele atue como você enquanto você está conectado. Isso não envia suas chaves privadas pela Internet, nem mesmo enquanto elas estão criptografadas; ele apenas permite que um servidor remoto acesse seu agente SSH local e verifique sua identidade.
Funciona assim: você pede ao seu servidor remoto para extrair algum código do Github, e o Github diz “ quem é você? ” para o servidor. Normalmente, o servidor consultará seus próprios arquivos id_rsa para responder, mas, em vez disso, encaminhará a pergunta para sua máquina local. Sua máquina local responde à pergunta e envia a resposta (que não inclui sua chave privada) para o servidor, que a encaminha de volta ao Github. O Github não se importa se sua máquina local respondeu à pergunta, ele apenas vê que ela foi respondida e permite que você se conecte.
RELACIONADO: Como bloquear seu servidor SSH
Como ativar o encaminhamento de agente SSH
No Mac e Linux, o encaminhamento do agente SSH é integrado ao ssh e o processo do agente ssh é iniciado automaticamente. Tudo o que você precisa fazer é certificar-se de que suas chaves foram adicionadas ao ssh-agent e configurar o ssh para usar o encaminhamento.
Adicionar chaves ao ssh-agent
Você pode usar o utilitário ssh-add para adicionar chaves ao seu agente local. Supondo que sua chave privada esteja armazenada em id_rsa, você pode executar:
ssh-add ~ / . ssh / id_rsa
Você também pode colar manualmente a chave em vez de usar id_rsa. Verifique se a chave foi adicionada corretamente com:
ssh-add -L
Se for, deve cuspir sua chave.
Adicionar chaves no macOS
No macOS, você precisará executar:
ssh-add -K ~ / . ssh / id_rsa
O sinalizador -K armazenará a chave no macOS Keychain, necessário para que ele se lembre de suas chaves durante as reinicializações.
Permitir encaminhamento na configuração do seu cliente
Abra seu arquivo ~ / . ssh / config em sua máquina local ou crie um novo se estiver vazio. Definiremos uma nova regra para garantir que o encaminhamento do agente esteja habilitado para o domínio deste servidor:
Exemplo de host ForwardAgent sim
Você deve substituir example pelo nome de domínio ou endereço IP de seus servidores. Você pode usar o caractere curinga * para o host, mas então encaminhará o acesso às suas chaves privadas para todos os servidores aos quais se conectar, o que provavelmente não é o que você deseja.
Dependendo do seu sistema operacional, você também pode ter arquivos de configuração SSH em / etc / ssh / ssh_config para macOS ou / etc / ssh_config para Ubuntu. Esses arquivos podem substituir o arquivo de configuração do usuário em ~ / . ssh / config, portanto, certifique-se de que nada seja conflitante. As linhas que começam com # são comentadas e não têm efeito.
Você também pode habilitar manualmente o encaminhamento de agente para qualquer domínio usando ssh -A user @ host, que ignorará todos os arquivos de configuração. Se você deseja um método fácil de encaminhamento sem alterar a configuração, pode adicionar o alias ssh = "ssh -A" às configurações do bash, mas é o mesmo que usar um host curinga, portanto, não o recomendamos para nada focado na segurança.
Teste de encaminhamento SSH
Se você não tiver dois servidores disponíveis, a maneira mais fácil de testar se o encaminhamento SSH está funcionando é adicionar sua chave pública de sua máquina local ao perfil do Github e tente usar o SSH de um servidor remoto:
ssh git@github. com
Se funcionou, você verá seu nome de usuário e poderá enviar e receber código de um repo sem nunca colocar chaves privadas no servidor.
Configure o encaminhamento SSH para clientes Windows
Como o Windows não é um sistema operacional Unix, a configuração irá variar dependendo de como exatamente você está executando o ssh em primeiro lugar.
Se você estiver usando o subsistema Linux para Windows, que permite executar o bash no Windows, a configuração será a mesma do Linux ou macOS, já que está virtualizando totalmente uma distribuição Linux para executar o linha de comando.
Se você estiver usando Git Bash, a configuração é a mesma do Linux, mas você precisará iniciar manualmente o ssh-agent ao iniciar o shell , que você pode fazer com um script de inicialização em . bashrc.
Se você estiver usando PuTTY, a configuração é bastante simples. Na configuração, vá para Conexão > SSH > Autentique e ative “ Permitir encaminhamento de agente. ”

Você também pode adicionar seu arquivo de chave privada do mesmo painel. PuTTY cuidará do agente SSH para você, então você não precisa mexer em nenhum arquivo de configuração.
RELACIONADO: Como gerenciar um arquivo de configuração SSH no Windows e Linux
O que fazer se o encaminhamento SSH não estiver funcionando
Certifique-se de ter as chaves SSH em primeiro lugar; se você não fizer isso, pode executar ssh-keygen, que colocará sua chave privada em ~ / . ssh / id_rsa e sua chave pública em ~ / . ssh / id_rsa. pub.
Verifique se suas chaves SSH estão funcionando corretamente com autenticação regular e adicione-as ao ssh-agent. Você pode adicionar chaves com ssh-add.
O processo ssh-agent também precisa estar em execução. No macOS e no Linux, ele deve iniciar automaticamente, mas você pode verificar se está sendo executado com:
echo "$ SSH_AUTH_SOCK"
Se estiver configurado corretamente, você verá o retorno de um soquete de Listeners.
Certifique-se de que seus arquivos de configuração estejam configurados corretamente para incluir ForwardAgent yes, e certifique-se de que nenhum outro arquivo de configuração está substituindo este comportamento. Para verificar quais arquivos de configuração o SSH está usando, você pode executar o ssh no modo detalhado:
ssh -v git@github. com
Que deve mostrar quais arquivos de configuração estão sendo usados. Os arquivos exibidos posteriormente nesta lista têm precedência sobre os arquivos anteriores.

E, claro, as opções da linha de comando sobrescrevem os arquivos de configuração. Se o encaminhamento do agente não estiver funcionando com ssh -A e suas chaves estiverem configuradas corretamente em seu agente, algo está errado e você precisará verificar sua conexão com os servidores da cadeia.
Nenhum comentário