ofutonneko

情弱がんばる自分用めも

SSH鍵生成〜GitHubに登録する手順のメモ

Macのターミナルからssh鍵生成してGitHubに登録してgit cloneするまでの手順のメモ。
リポジトリの作成はやってある前提で(Web画面からポチポチするだけだし…)。

より参考にすべきページはこちら。
Connecting to GitHub with SSH - User Documentation
この中の
Generating a new SSH key and adding it to the ssh-agent - User Documentation

Adding a new SSH key to your GitHub account - User Documentation
をやれば目的は達成されます。

鍵生成

.ssh配下など使いたい場所でssh-keygenコマンド。

$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ./id_rsa_hoge

-Cでコメント。メールアドレスが一般的らしい。鍵を使い分けるため等ファイル名を変えたい場合は-fオプションで。

実行するとパスフレーズを聞かれるので入力。不要な場合はenterで空に。

$ ssh-keygen -t rsa -b 4096 -C "hoge@example.com" -f ./id_rsa_hoge
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
...

ファイルが2つ作られてればOK。

$ ls
id_rsa_hoge        # 秘密鍵
id_rsa_hoge.pub    # 公開鍵

ssh-agentに鍵の追加

作った鍵を以下のコマンドでssh-agentに追加します。鍵を作るごとにこの作業が必要。

$ ssh-add -K ~/.ssh/id_rsa_hoge

GitHubに鍵の追加

公開鍵をクリップボードにコピーする。今までlessで開いて〜とやっていたけどこれの方がスマートっぽい。

$ pbcopy < ~/.ssh/id_rsa.pub

あとはGitHubのWeb画面から操作。

  • 画面右上の自分のアイコンから、Settings -> SSH and GPG keys -> New SSH key の順でクリック
  • Titleはお好みで
    • 私は今後ほかの鍵を追加するとしたら、どの端末の鍵かを区別できるようにしたいなと思い、そんな内容を入力しました
  • Key欄にpbcopyされたものをペースト
  • Add SSH key をクリック

git clone

ここまで終わったらターミナルに戻り、お好きなディレクトリでいざgit clone

$ git clone git@github.com:hoge/myrepo.git
Cloning into 'myrepo'...
...
$ ls -la myrepo
total 16
drwxr-xr-x   5 hoge  staff   160  2 10 11:01 .
drwxr-xr-x+ 31 hoge  staff   992  2 10 11:01 ..
drwxr-xr-x  12 hoge  staff   384  2 10 11:01 .git
-rw-r--r--   1 hoge  staff  1203  2 10 11:01 .gitignore
-rw-r--r--   1 hoge  staff    39  2 10 11:01 README.md

期待通りの中身が入ってれば問題なし。お疲れさまでした。

ハマったところ

git cloneしようとしたところで悲しみのPermission denied (publickey)

$ git clone git@github.com:hoge/myrepo.git
Cloning into 'myrepo'...
(省略)
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ssh-agentへの鍵の追加が必要でした。

$ ssh-add -K ~/.ssh/id_rsa_hoge

これを実行して再度git cloneしたら無事できました。

Generating a new SSH key and adding it to the ssh-agent - User Documentation
ここの Adding your SSH key to the ssh-agent の節ですね。ちゃんと読んで、手順はきちんと守りましょう。

先人の知見:githubからcloneするときにPermission denied (publickey)エラーが発生する | ハックノート