SSH
tmux

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

More than 3 years have passed since last update.

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 になっているので、他の人に盗まれることもなくて安心。