環境はMac v10.9.2。
以前SSHキーを作成したときにパスフレーズをしっかり設定せずエンターを押していたので、
Bitbucket 用にパスフレーズ付きのものを再作成し直すのが目的。
目次
デフォルトで作成されるもの
id_rsa:
秘密鍵、他人には見られないようにする
作成の際、パスフレーズを設定する。
id_rsa_pub:
公開鍵、Bitbucket / Github に渡す。
SSH鍵の作成
ターミナルで以下を実行。
$ cd ~/.ssh
$ mkdir bitbucket
$ cd bitbucket
$ ssh-keygen -t -t rsa -C “bitbucketに登録しているメールアドレス"
はき出される処理↓
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/***/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
上から順に、
Enter file in which to save the key (/Users/***/.ssh/id_rsa):
保存するファイル名をここで変更する。
空のままエンターを押すと、はじめに記述した id_rsa / id_rsa.pub となる。
セキュリティのため、変更したほうがいいらしい。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
ここで5文字以上の任意のパスフレーズを入力する必要がある。
再確認されるので、再度入力してエンター。
config への記述
.ssh ディレクトリ以下に作成
$ vim ~/.ssh/config
ここは参照先のサイトによって記述が違った。
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/bitbucket/id_rsa.bitbucket.org
User git Port 22
TCPKeepAlive yes
IdentitiesOnly yes
IdentitiesOnly (ファイルに格納された秘密鍵のみを使用)
認証の際に、たとえ認証エージェントssh-agent (1) またはPKCS11Providerが複数の秘密鍵を持っていた場合でも、ssh_config ファイルで指定された秘密鍵のみを使用するよう指定します。この引数のとりうるキーワードは”yes”または”no”です。この項目を使うのは、ssh-agent が多くの異なる秘密鍵を返すような状況でしょう。デフォルトでは”no”になっています。IdentityFile (identity ファイル)
ユーザの DSA, ECDSA, ED25519 または RSA 認証用 identity (秘密鍵) を読むファイルを指定します。〜中略〜
IdentityFileはIdentitiesOnlyと組み合わせることによって、エージェントが認証時にどの identity を提供するかを選択することができます。
TCPKeepAlive は SSH_CONFIG (5) よりデフォルトでは”yes”となっているらしいので、自分は下記のものを使用。
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
User git
:wq で入力を終了。
ターミナルで以下を実行して公開鍵をクリップボードに貼り付ける。
pbcopy < ~/.ssh/“公開鍵(.pub)名"
Bitbucket の場合なら、これを「アカウント管理 > SSH キー」から「鍵を追加」ボタンから追加する。
SSH鍵 / フォルダのパーミッションを変更する
chmod 700 ~/.ssh
chmod 600 ~/.ssh/“公開鍵(.pub)名"
Tips
config ファイルでgitサーバーごとに鍵を使い分ける
下記を参照した。
~/.ssh/config の IdentityFile に秘密鍵ではなく公開鍵を指定する – ngの日記
~/.ssh/config で簡単に複数ホストへのSSH接続を管理する – すぱぶろ
参照先コメントからの引用:
ホスト毎に鍵を作りましょうというエントリではなく、複数の鍵を管理しなければならなくなった場合の対応を書いたつもりです。
通常はワンペアの鍵を使いまわせばよいと思います。
なんとなく、使用するGitサーバーごとに作成していたけど、
確かに今のところ複数を使い分ける場面とかはないので、作成したワンペアを使い回せばいいのかもしれない。