Git BashでSSH鍵(キー)を作成し、Bitbucketとつなぐ

こんにちは!武藤です。

いよいよグランフェアズでGit運用がはじまります!
昨年より社内で勉強会を行い、ウォーミングアップをしていましたが、ついに本稼動です!

Gitの勉強をはじめたころはSourceTreeを使っていましたが、今はGit Bashを使っています。
SourceTreeでの操作は直感的で簡単がゆえに、操作を間違えていても気づきにくいためです。
Git Bashでは間違えるとすぐにエラーがでてくるので、何でつまずいているのかすぐにわかり、解決方法も調べやすいです。 グランフェアズに入社する前までは黒い画面は苦手でしたが、今は親切ないいやつに思えてきて好きになっています。

最初につまずいた、Git BashでSSH鍵(キー)を作成し、Bitbucketとつなぐ方法についてまとめます。
ここではWindows環境を例に、実際にBitbucketのリモートリポジトリをローカルリポジトリに取り込むところまでご紹介します。

  1. Git BashでSSH鍵(キー)を既に持っていないか確認する
  2. Git BashでSSH鍵(キー)を作成する
  3. 公開鍵を自分のBitbucketアカウントに登録する
  4. Bitbucketのリモートリポジトリをローカルリポジトリに取り込む

1.Git BashでSSH鍵(キー)を既に持っていないか確認する

Git Bashを立ち上げて、SSHクライアントが利用可能か確認します。

$ ssh -v

インストールされていれば、このように表示されます。

OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-e escape_char] [-F configfile]
[-i identity_file] [-L [bind_address:]port:host:hostport]
[-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
[-R [bind_address:]port:host:hostport] [-S ctl_path]
[-w local_tun[:remote_tun]] [user@]hostname [command]

インストールされていなければ、再インストールします。
参考:WindowsにGitをインストールする

自分の ~/.sshディレクトリの内容を表示してみます。

$ ls -a ~/.ssh

Git BashからSSHを使用したことがなければ、次のような表示になります。

ls: /c/Users/manthony/.ssh: No such file or directory

既にSSH鍵(キー)を持っている場合は、このようになります。

.        ..        id_rsa        id_rsa.pub    known_hosts

この場合は、3.公開鍵を自分のBitbucketアカウントに登録するに進みます。

2.Git BashでSSH鍵(キー)を作成する

SSH鍵(キー)を作成します。

$ ssh-keygen

特にオプション指定しないで作成すると2048bitのRSA鍵が生成されます。

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/username/.ssh/id_rsa):

SSH鍵(キー)の保存先を聞かれているので、表示されている場所でよければEnterを押します。
ここでは、仮にusernameとしています。

Created directory '/c/Users/username/.ssh'.
Enter passphrase (empty for no passphrase):

パスフレーズを入力します。
パスフレーズを設定しておくと秘密鍵自体も暗号化した形で保存されるので安心です。

Enter same passphrase again:

もう一度同じパスフレーズを入力します。

Your identification has been saved in /c/Users/username/.ssh/id_rsa.
Your public key has been saved in /c/Users/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LxncDl........
username@username-PC
The key's randomart image is:
+---[RSA 2048]----+
|           +o    |
|          +.     |
|         ..+     |
|       o oo.+.   |
|        S.o.o+oo |
|         *+ooE*o=|
|        o.oo+=.B*|
|         .o ++*++|
|           o.*=o |
+----[SHA256]-----+

これでSSH鍵(キー)ができました!

3.公開鍵を自分のBitbucketアカウントに登録する

ブラウザを立ち上げて、Bitbucketにログインします。

Account settingsを選択する画面

メニューバーの自分のアイコンから「アカウントの管理」を選択します。
アカウントの管理ページの左メニューのセキュリティにある「SSHキー」を選択します。

SSHキーのページが表示され、既存のキーが表示されます。 「鍵を追加」ボタンをクリックします。

鍵を追加する画面

生成したSSH鍵(キー)の公開鍵の内容は、Git Bashを立ち上げて、次のコマンドを実行すると確認できます。

$ cat ~/.ssh/id_rsa.pub

ssh-rsa以下をコピーします。
Label名を管理しやすい名前で登録します。
Bitbuketのkeyのフォームにクリップボードから貼り付けて、「鍵を追加」をクリックします。

SSH鍵を作成する画面

4.Bitbucketのリモートリポジトリをローカルリポジトリに取り込む

$ cd <作業ディレクトリを作る場所>
$ git clone git@bitbucket.org:granfairs/{リポジトリ名}.git

以下のようなメッセージが出ます。

The authenticity of host 'bitbucket.org (104.192.143.1)' can't be established.
RSA key fingerprint is SHA256:zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A.
Are you sure you want to continue connecting (yes/no)?

yesと入力

Warning: Permanently added 'bitbucket.org,104.192.143.1' (RSA) to the list of known hosts.
Enter passphrase for key '/c/Users/username/.ssh/id_rsa':

パスフレーズを入力します。

これでリモートリポジトリからローカルリポジトリへのクローンが始まります!

Git BashでSSH鍵(キー)を作成し、Bitbucketとつなぐ方法は他のサイトでも多数紹介されていますが、Macでの設定方法が多く、しなくてもいい設定をしていたりと失敗を繰り返しました。
実はこんなに簡単だったんですね。

参考:Atlassian Japan Confluence:Git用SSHの設定