ロボットの体内PCとかでよくある話なのですが
- 複数人で同じPCの同じアカウントを使用する
- gitのリモートレポジトリにアクセスする際に、だれか一人のSSH鍵で設定してしまうとセキュリティ的に問題がある(そのPCを使える人は全員、その人の全てのプライベートレポジトリを読み書きできてしまうので)
という場合があります。最近はGitHubが基本的にSSH認証だけしか対応しなくなってしまったので、HTTPS認証での「ユーザ名とパスワードを入力する」という方法も使えません。
そこで、それぞれ自分専用のSSH鍵を作成します。
ssh-keygen -C "[your email]" -f ~/.ssh/id_rsa_[your GitHub ID]
# 例えば
ssh-keygen -C "yasu313nori@gmail.com" -f ~/.ssh/id_rsa_yasu31
その際にEnter passphrase
で秘密のパスワードを設定すれば、自分しか使えない鍵を~/.ssh/id_rsa_[your GitHub ID]
に生成することができます。
あとはいつもと同じように、~/.ssh/id_rsa_[your GitHub ID].pub
にある公開鍵をコピーして自分のGitHubのSSH public keyに加えれば、
cat ~/.ssh/id_rsa_[your GitHub ID].pub
git clone
、git push
系のリモートに接続するコマンドの前にSSH鍵を指定するようにすれば、自分の鍵でリモートにアクセスできます
GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa_[your GitHub ID] -o IdentitiesOnly=yes' git clone [SSH URL of repository]
毎回このコマンドを打つのは長いので、~/.bashrc
に以下のようなエイリアスを登録しておくと楽です。
alias git-[your GitHub ID]="GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa_[your GitHub ID] -o IdentitiesOnly=yes' git"
# 例えば
alias git-yasu31="GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa_yasu31 -o IdentitiesOnly=yes' git"
これで、リモートと通信するコマンドを打つ時はこのようにして自分の鍵を簡単に指定できます。
git-yasu31 pull origin master
参考