SSHでGitHubに接続#

SSHでログインする意味#

安全にサーバーへログインためです.
プライベートリポジトリをクローンするとき,トークンを生成する必要がない

SSH鍵の生成#

公開鍵と秘密鍵はホームディレクトリーの.sshフォルダに保存される

$ mkdir -p ~/.ssh/github
$ cd ~/.ssh/github
$ ssh-keygen -t ed25519 -f id_rsa
# コマンド実行後に求められるパスフレーズは設定すべき(Enterで省略可)
# ssh-keygenコマンドのオプション
# -t [type] : 生成する鍵の暗号方式を指定できる
# -f [output_keyfile] : sshkeyの保存先とファイル名の指定できる
# -C [comment] : コメント

生成された鍵の暗号方式の確認

$ ssh-keygen -l -f id_rsa.pub
($ ssh-keygen -l -f ~/.ssh/github/id_rsa.pub)

注意点  秘密鍵 [ id_rsa ] : 誰にも漏らしてはいけない  公開鍵 [ id_rsa.pub ] : 他の人に渡してもいい

公開鍵をGitHubに登録#

生成した id_rsa.pub 内の公開鍵をcatで表示し,コピーする
ssh- … …@… の一行すべてコピーする

$ cat id_rsa.pub
($ cat ~/.ssh/github/id_rsa.pub)

Githubにログインし,setting - > SSH & GPG keys から New SSH key をクリック
タイトルは自由,認証キーは ‘Authentication’ ,コピーした公開鍵をペーストする
../../_images/github_with_ssh_0.png

sshの設定追加#

$ vi ~/.ssh/config

※ # comment… は消さなくても良い

Host github.com                        # alias(好きな名前でもOKだが,cloneなどするときにコピペで対応できなくなる)
  HostName github.com                  # サーバーのホスト名やIPアドレス
  User git                             # サーバーのユーザー名
  IdentityFile ~/.ssh/github/id_rsa    # 秘密鍵の絶対パス
  TCPKeepAlive yes                     # 接続の有効無効の確認通知を出すかどうか(yes/no)
  IdentitiesOnly yes                   # IdentityFileで指定した秘密鍵に限定するかどうか(yes/no)

接続の確認#

秘密鍵を使用する際のパスフレーズが求められる
鍵の生成で設定したパスフレーズを入力

$ ssh -T git@github.com
Enter passphrase for key '/Users/username/.ssh/github/id_rsa': 
Hi GithubUser! You've successfully authenticated, but GitHub does not provide shell access. <----この出力が出たら成功

Clone#

リポジトリをcloneするときは https ではなく,sshを選択してコピーする

$ git clone git@github.com:user_name/repo_name.git  # 例

Reference#

  1. GitHubにSSH接続するまでの手順

  2. GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~