新しい tmux セッション用に ssh-agent を生成することは可能ですか?

新しい tmux セッション用に ssh-agent を生成することは可能ですか?

tmux (および screen) セッション内から GUI セッションの SSH エージェントとの接続を再確立するためのハックをたくさん見てきました。GUI から切り離して、特定の tmux セッション内でのみ使用する ssh エージェントを生成することは可能でしょうか? エージェント自体は、終了しないように tmux ウィンドウの 1 つを「使い切る」必要がありますか? それとも、セッションが存続する限り持続するバックグラウンドでエージェントを生成することは可能ですか?

答え1

OK、もう少し調べてみたところ、ターミナルが接続されているときに SSH_AGENT に簡単にフックできるはずです。tmux はすでに重要な構成「update-environment」を提供していますが、欠けている部分は既存のシェルが自動的に更新されないことです。ただし、tmux は更新された環境変数を追跡するため、更新スクリプトは screens よりもハッキングが少なくなります。


# 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}
}

これから専念

答え2

@stsquadの答えコマンドが変数exportを設定できなかったため、失敗しました。SSH_CONNECTION

の値をSSH_CONNECTION引用符で囲む必要がありました。

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}"
}

答え3

私が最近見つけたもう一つの選択肢はダニエル・ロビンズのキーチェーン再接続して、セッション全体のエージェントではなく、ユーザー/ホスト全体のエージェントを持つための便利な方法を提供するユーティリティです。

関連情報