Cada vez que você usa ssh em bastion01
, um soquete diferente é aberto para manipular o encaminhamento de chaves. Você pode ver o nome do arquivo na variável de ambiente SSH_AUTH_SOCK
. Quando você inicia tmux
, o valor dessa variável de ambiente é incluído no ambiente global de tmux
, que é herdado por quaisquer shells iniciados nessa sessão.
Agora, quando você se reconectar a bastion01
mais tarde, um soquete diferente será alocado para lidar com o encaminhamento de chaves (já que é uma nova sessão ssh). Você pode ver isso examinando o valor de SSH_AUTH_SOCK
antes de anexar novamente à sua sessão tmux
e depois. Para que o encaminhamento de chaves funcione dentro de tmux
, você precisa atualizar o valor de SSH_AUTH_SOCK
dentro de tmux
para o nome do soquete que está sendo usado pela sessão ssh atual.
Uma maneira rápida e suja de fazer isso é escrever um script curto que salvará este novo valor em um arquivo, e executá-lo dentro de qualquer janela tmux
onde você será ssh
-ing de.
#!/bin/bash
echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > ~/.auth_ssh
Execute esse script assim que estiver ssh em bastion01
, mas antes de anexar novamente à sua sessão do tmux. Então, antes de tentar ssh em qualquer lugar de dentro de tmux
, execute o seguinte:
source ~/.auth_ssh
Cada janela tmux
tem seu próprio ambiente, portanto, você precisará executá-la em cada janela em que tentar executar o ssh. Para simplificar, você pode aliasar o ssh para fazer isso por você:
alias ssh="source ~/.auth_ssh; ssh"
Observação: isso é uma simplificação excessiva de um script que usamos no trabalho para atualizar as informações de autorização do SSH. Se não funcionar direito, espero que pelo menos lhe dê informações suficientes para procurar uma solução melhor para o Google (ou alguém publique aqui uma solução melhor).