「GitHubでssh接続する方法」公開鍵・秘密鍵の生成

GitHubにssh接続するためには公開鍵と秘密鍵を生成し、GitHubに登録することが必要となったので、その手順をまとめた備忘録になります。

目次

公開鍵・秘密鍵を作成する

鍵を入れるフォルダに移動します。

$cd ~/.ssh

はじめて鍵を生成するときは何も入っていないはずです。僕は一度作成済みなので、次のコマンドで鍵を生成します。セキュリティを考えて、暗号化強度を強く暗号化強度を4096にして作成しています。

-Cのコメント部分を入れ替えて、以下のコマンドを実行。

※GitHubに登録しているEmailアドレスを使うのが一般的のようです。

$ ssh-keygen -t rsa -b 4096 -C "hogehoge@fuga.com"
//-t 暗号化方式を指定
//-b 暗号化強度を指定
//-C コメントを設定 

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/ts/.ssh/id_rsa): /Users/ts/.ssh/id_rsa_github //秘密鍵の名前を指定
Enter passphrase (empty for no passphrase):  //パスワードを入力
Enter same passphrase again:  //もう一度入力
Your identification has been saved in id_rsa_github. //秘密鍵
Your public key has been saved in id_rsa_github.pub. //公開鍵

何か聞かれたら何も入力せず3回エンターを押せば、id_rsaとid_rsa.pubの2つの鍵が生成されますが、すでに同パスにid_rsaとid_rsa.pubがある場合、上書きされてしまうので、1回目で鍵の名前を指定するようにしましょう。

なお、2回目、3回目はパスフレーズの設定(パスワード設定のようなもの)ですが、ここはなくて一応OKみたいですが、僕は設定しておきました。設定したら忘れないようにメモしておきましょう。(僕は忘れて設定し直しました^^;)

ちなみに、パスフレーズを忘れた場合は、既存のid_rsa_githubとid_rsa_github.pubを削除し、また新しく設定し直しましょう。既にGitHub等とssh接続している場合は、そちらも変更しておきましょう。

現在使用している鍵の暗号強度の確認

以下のコマンドにて鍵長が2048以上かつ暗号化方式がRSA、或いはECDSAやEd25519であればOK

$ ssh-keygen -l -f ~/.ssh/id_rsa.pub
4096 SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com (RSA)

作成できたファイルを確認

$ ls
config			id_rsa_github.pub //右が公開鍵
id_rsa_github			known_hosts //左が秘密鍵

GitHubに公開鍵を設定する

https://github.com/settings/ssh

で公開鍵の設定が出来ます。(GitHubに登録していることが前提条件です)

画面右上の「New SSH key」のボタンを押します。

「Title」にわかりやすい任意に名前、「Key」に公開鍵の中身を入れます。入力したら「Add SSH key」で パスワード入力が求められるので入力する。

なお、鍵の中身のクリップボードへのコピーは以下でできる。(※鍵の名前は自分の作成したもの)

$ pbcopy < ~/.ssh/id_rsa_github.pub

接続を確かめる

$ ssh -T git@github.com

で返ってきたら接続完了です!
Hi (account名)! You’ve successfully authenticated, but GitHub does not provide shell access.

しかし…鍵を作るときに名前を指定していれば、うまくいかないかもしれません。それは、ssh接続の際「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいかないからです。

それに対応するためには~/.ssh/configを作成します。

config設定

$ vim ~/.ssh/config

権限を修正する

$ chmod 600 ~/.ssh/config

configに下記を追記

 Host github
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_github
  IdentitiesOnly yes

vimエディタコマンド一覧を追加予定

秘密鍵をssh-agentに登録する

//ssh-agentが動作しているか確認
$ eval "$(ssh-agent -s)"
Agent pid 10203
//動いていることが確認できました。

//登録したい鍵を指定
$ ssh-add -K ~/.ssh/id_rsa_github
Enter passphrase for /Users/ユーザー名/.ssh/id_rsa_github: # 鍵のpassword入力
Identity added: /Users/ユーザー名/.ssh/id_rsa_github (~/.ssh/id_rsa_github)

//ちなみに-K のオプションを指定することでターミナルを再起動しても消えなくなる

秘密鍵の削除

//特定の鍵の削除
$ ssh-add -d ~/.ssh/<削除したい鍵>

//ALL削除
$ ssh-add -D

接続確認

接続確認をしてみる。
下記のように出れば、接続完了です!

$ ssh -T git@github.com
Hi (アカウント名)! You've successfully authenticated, but GitHub does not provide shell access.
//ちなみにssh -T githubでもOK

これでGitHubにgit@でアクセスできるようになります。お疲れ様でした。m(_ _)m

※ なお、リポジトリで使用する場合、Gitのリモートリポジトリをhttpsに切り替えている場合はリモートリポジトリのURLを切り替える必要があるので注意。以下参照

既存のリモートリポジトリURLを変更する方法

GitHubと実際にやりとりするときにID・パスワードを聞かれるときssh接続がうまくいっていません。レポジトリのディレクトリに入り

$ git config remote.origin.url

で確認し https://github.com/[ユーザID]/[リポジトリ]となっていたら

$ git remote set-url origin git@github.com:[ユーザID]/[リポジトリ].git

とする。/~/.ssh/configで設定している場合は

$ git remote set-url origin [Host名]:[ユーザID]/[リポジトリ].git

とする。[Host名]とは~/.ssh/configの一行目のHostの名前(ここではgithub)のことです。

公式ドキュメント:https://docs.github.com/ja/github/using-git/changing-a-remotes-url

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる