47
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
47
Help us understand the problem. What are the problem?