ssh の秘密鍵を複数サイトに向けて設定する
ソースコードのバージョン管理のリモートリポジトリについて、ずっと Github のみを利用していました。
最近 Bitbucket も使う機会ができたので、そちらの設定をしていました。
どちらも ssh の公開鍵を登録して、秘密鍵を使ってアクセスできます。 こうすることで、リクエストのたびにパスワードを求められることを回避できるので、私は積極的に設定しています。
これら2つのサイトに向けた秘密鍵を設定した時の手順についてのメモです。
結論
- ssh 秘密鍵と公開鍵の作成はいつも通り行います。
- .ssh/ に config というファイルを設置することでホスト・IPアドレスごとに使用する鍵の設定ができます。
ssh 秘密鍵と公開鍵の作成
以下の記事参考に ssh-keygen で秘密鍵・公開鍵のペアを作ります。
Github にSSH公開鍵を登録
コマンド実行の際に、出力する場所を求められるので前回とは異なる場所で違いがわかるようにしましょう。
公開鍵をサービスに登録する
今回は Bitbucket に登録しました。 Github でも Bitbucket でも同じような設定方法ですので、それほど迷うことはありません。
「.pub」の公開鍵の方をサービスに登録します。間違えないようにしましょう。
Mac であれば以下のコマンドでクリップボードにコピーできます。
pbcopy < ~/.ssh/id_rsa.pub
秘密鍵のパーミッションを変更しておく
秘密鍵の方は他ログインしたユーザーなどに read できないように、パーミッションを変更しておきましょう。
たとえば以下のようなコマンドになるはずです。
chmod 600 ~/.ssh/id_rsa
ssh の設定ファイルにドメインごとの設定を記述する
.ssh/
に config
というファイルを作成し、ここに ssh の設定を記述します。
以下の書式で設定します。
Host [ホスト名]
User [ユーザー名: GitHubの場合は`git`]
Port 22
HostName [サービスのドメイン または IPアドレス]
IdentityFile [秘密鍵のパス]
IdentitiesOnly yes
たとえばこんな感じ、Github と Bitbucket にそれぞれ別の鍵を設置しました。
Host github.com
User git
Port 22
HostName github.com
identityFile ~/.ssh/id_rsa
IdentitiesOnly yes
Host bitbucket.org
User git
Port 22
HostName bitbucket.org
identityFile ~/.ssh/bitbucket/id_rsa_bb
IdentitiesOnly yes
おわりに
複数の鍵を登録できると便利ですね。 今回は Github と Bitbucket での使い分けでしたが、個人用とか仕事用とかで分ける必要がある時なども使える設定です。
リクエストの都度パスワードを入力したりするのは手間なので、積極的に秘密鍵・公開鍵を設定しておくと快適なのでおすすめです。