É possível gerar um agente ssh para uma nova sessão do tmux?

É possível gerar um agente ssh para uma nova sessão do tmux?

Já vi muitos hacks para restabelecer o contato com o agente SSH de uma sessão GUI a partir de sessões tmux (e screen). Estou me perguntando se é possível desacoplar da GUI e gerar um agente ssh exclusivamente para uso em uma determinada sessão do tmux. O próprio agente teria que "esgotar" uma das janelas do tmux para evitar ser morto ou é possível gerar uma em segundo plano que persista enquanto a sessão estiver ativa?

Responder1

OK, fiz mais pesquisas e devo ser capaz de conectar-me facilmente a qualquer SSH_AGENT que esteja disponível quando o terminal estiver conectado. O tmux já fornece a configuração de chave "ambiente de atualização", mas a peça que falta é que os shells existentes não são atualizados magicamente. No entanto, o tmux rastreia as variáveis ​​de ambiente atualizadas, portanto o script de atualização é muito menos hackeado do que as telas:


# Sync the environment of an existing shell
#
#  tmux already updates the environment according to
#  the update-environment settings in the config. However
#  for existing shells you need to sync from from tmux's view
#  of the world.
function tmux_sync_env
{
    external_env=`tmux showenv | grep -v "^-"`
    export ${external_env}
}

A partir dissocomprometer-se

Responder2

Tive que modificar o @stsquadresponder. Estava falhando para mim porque o exportcomando não conseguiu definir a SSH_CONNECTIONvariável.

Eu tive que colocar o valor SSH_CONNECTIONentre aspas.

function tmux_sync_env
{
    ssh_auth_sock=`tmux showenv | grep "^SSH_AUTH_SOCK"`
    ssh_connection=`tmux showenv | grep "^SSH_CONNECTION"`
    export ${ssh_auth_sock}
    export "${ssh_connection}"
}

Responder3

Outra opção que encontrei recentemente é a de Daniel Robbinschaveiroutilitário que oferece uma maneira elegante de reconectar e ter um agente para todo o usuário/host em vez de apenas um agente para toda a sessão.

informação relacionada