LoginSignup
49

More than 5 years have passed since last update.

tmux で attach したら ssh-agent が切れる場合

Last updated at Posted at 2015-08-03

ForwardAgent が有効な状態で、ssh ログインしなおすと、環境変数SSH_AUTH_SOCK が新しいパスをさすようになる。ここで tmux attach すると、tmux セッション上のシェルは以前の SSH_AUTH_SOCK の値を保持し続けていて、別の所を指しているのでうまくいかない。

~/.bashrc に

agent="$HOME/.ssh/agent"
if [ -S "$SSH_AUTH_SOCK" ]; then
    case $SSH_AUTH_SOCK in
    /tmp/*/agent.[0-9]*)
        ln -snf "$SSH_AUTH_SOCK" $agent && export SSH_AUTH_SOCK=$agent
    esac
elif [ -S $agent ]; then
    export SSH_AUTH_SOCK=$agent
else
    echo "no ssh-agent"
fi

のようなものを追加しておくと、ログインするたびに $HOME/.ssh/agent に symlink を貼るようになる。そして SSH_AUTH_SOCK は常に $HOME/.ssh/agent を見るようにしているので、古い tmux セッションでも最新の SSH_AUTH_SOCK の場所を指せるようになる。

$HOME/.ssh は通常 700 になっているので、他の人に盗まれることもなくて安心。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
49