githubでの複数アカウントの使い分けかた(その2)

以前紹介した方法では、ssh-agentを使っているとgithubで複数アカウントをうまく使い分けられませんでした。その改善案の紹介です。

以前 githubでの複数アカウントの使い分けかた を紹介しました。しかしあの方法だと Xubuntu ではうまく使いわけられませんでした。そこで原因と対策を調べたので紹介いたします。

原因

$ ps x | grep ssh
7231 ?        Ss     0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session startxfce4

$ ssh-add -l
2048 ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff koron@xps13 (RSA)

ということで ssh-agent が原因でした。もっと細かく言うと環境変数 SSH_AUTH_SOCK が定義れていることが原因です。なので unset SSH_AUTH_SOCK するだけでも十分使い分けられますが…スマートではありませんね。

対策

やはりココは ~/.ssh/config で対策したいところ。ちょっと調べたらちゃんと方法がありました。

Host gh-priv
    HostName github.com
    IdentitiesOnly yes
    IdentityFile ~/.ssh/personal_github_key

Host gh-work
    HostName github.com
    IdentitiesOnly yes
    IdentityFile ~/.ssh/work_github_key 

このように IdentitiesOnly yes と追加すると SSH_AUTH_SOCK を見なくなりました。素晴らしい。

雑感

手っ取り早く ssh-agent を止めてしまうことや、ssh-add でちゃんと鍵を管理することも考えたのですが、そもそも Xubuntu がどんな目的で ssh-agent を使っているのかわかりませんでした。また ssh-add を設定すべき (Xubuntuでの) 正しいタイミングも不明です。しかもそれらを調べるのも面倒でしたので、上記のように手っ取り早く解決する方法を選びました。

もっと良い方法があったら是非教えてください。