There's an echo in my head

日々のメモ。

screen で reattach しても ssh-agent が効き続けるようにする。

仙石浩明の日記: ssh-agent を screen の中から使う方法 に書かれているように、 screen のなかで ssh-agent を使うにはちょっと一手間がいる。この中の環境変数 $SSH_AUTH_SOCK を毎回書き換える処理が、 OpenSSH 7.3 から導入された IdentityAgent を使うことで不要になっていたのでメモ。

なお、以下は全て screen を実行するリモートホスト側での作業になる。

まず ssh ログイン時に実行される ~/.ssh/rc で、 $SSH_AUTH_SOCK を元にシンボリックリンクを作る処理を入れる。これは従来と同じで、 ssh-agent のソケットファイルを同一のパスで指定できるようにするための対応である。

#!/bin/bash

# Fix SSH auth socket location so agent forwarding works within tmux/screen
if [ "$SSH_AUTH_SOCK" ]; then
  ln -sf $SSH_AUTH_SOCK ~/.ssh/agent.sock
fi

そして ~/.ssh/config で IdentityAgent にこのシンボリックリンクを指定する。

Host *
    IdentityAgent ~/.ssh/agent.sock

参考

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。