【linux】 screenデタッチした場合にもssh agent forwardingを有効にしたい
ssh agent forwarding を設定することで、ホストAからホストBへのssh接続の際に、ホストBからの鍵要求をホストAがログイン元へ転送してホストAのログインに使用した鍵ペアの利用を可能にしてくれます。
が、screen を使っている場合、よろしくないことが起こってしまう。。。。。。screen をdetachして別ソケットからattachした場合、agent forwardingがうまく効かないのです。
[原因]
OpenSSHの場合、ssh agent forwardingにおける情報のやりとりはunix domain socketを使って行っています。unix domain socketは、/tmp/ssh-[ランダムな文字列]/agent.[sshdのPID] という名前でsshdが用意して、環境変数SSH_AUTH_SOCKに格納されます。 screenは環境変数SSH_AUTH_SOCKをキャッシュしてしまい、SSH_AUTH_SOCKは以前のままで、unix domain socketだけが再作成された形になるのです。
[対策]
環境変数は固定のファイル名にして、そこから実際のunix domain socketへsymlinkを張る方針!!
.bashrcに
agent="$HOME/users/mydir/dotfile/.ssh-agent-`hostname`"
if [ -S "$agent" ]; then
export SSH_AUTH_SOCK=$agent
elif [ ! -S "$SSH_AUTH_SOCK" ]; then
export SSH_AUTH_SOCK=$agent
elif [ ! -L "$SSH_AUTH_SOCK" ]; then
ln -snf "$SSH_AUTH_SOCK" $agent && export SSH_AUTH_SOCK=$agent
fi
でけたv( ̄Д ̄)v ♡