【GitHub】SSH接続をする方法と公開鍵と秘密鍵の作り方

2024.07.10

GitHubに接続する方法です。今のところ頻繁にSSH接続をするわけではないので結構忘れがち…

Macのターミナルでの接続方法を書いていきます。公開鍵と秘密鍵を使った接続方法です。

ローカル環境で鍵を作ってGitHubに作った公開鍵を設定することでSSH接続を実現します。

ローカル(Mac)の公開鍵と秘密鍵の場所

デフォルトではMac PCの下記フォルダにありました。

/Users/ユーザーの名前/.ssh

隠しファイルになっているので「command」+「shift」+「.」で表示できるようにしましょう。

ターミナルからコマンド入力で鍵を作成しますが、ここに秘密鍵と公開鍵ができます。

ローカル環境でSSH Keyを作成

下記のコードで公開鍵と秘密鍵を作成します。

ssh-keygen -t ed25519 -C “xxxxx@gmail.com”

「xxxxx@gmail.com」の部分はGitHubに登録してある部分は自分のメールアドレス、ed25519はデジタル署名アルゴリズムとのことで他にも種類があるようです。

このコマンドを実行すると保存先(~/.ssh)が表示されるのでEnterキーを押します。

Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/xxxxxxx/.ssh/id_ed25519):  

すると今度はパスフレーズ(SSH KEYのパスワードのようなもの)を設定するように言われます。これはSSH接続に使うので覚えておきましょう。パスフレーズは確認で2回入力必要があります。

作成が成功すると下記のようにターミナルで表示されます。

Your identification has been saved in /Users/xxxxxxxx/.ssh/id_ed25519
Your public key has been saved in /Users/xxxxxxxx/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:z5jEk7TBeWQc8JlkmP2bMeBBTkjzY7LXyD23ojOTgVQ “xxxxx@gmail.com”
The key's randomart image is:
+--[ED25519 256]--+
|       .+OO.     |
|       .+%Eo     |
|        *oX+     |
|       o.X.=+    |
|       .S.+ +=.  |
|       ..B. oo . |
|        o oo. .  |
|          =. .   |
|          .+     |
+----[SHA256]-----+

「~/.ssh」フォルダ上に「id_ed25519」「id_ed25519.pub」というファイルが作成されます。「~.pub」というのが公開鍵です。

SSH keyをGithubに登録する。

作成した公開鍵をクリップボードにコピー(下記はMacのコマンド)。公開鍵の中身に記載されている内容をコピーしています。

pbcopy < /Users/xxxxxxx/.ssh/id_ed25519.pub

このコピーした公開鍵をGithubの設定画面に貼り付けます。

右上のアイコンをクリックして「Settings」をクリック

左サイドバーの「SSH and GPG keys」をクリック

Title欄で任意のテキスを入力、keyの欄にクリップボードにコピーした内容を貼り付け、「Add SSH key」ボタンをクリックします。

これでGithub上への公開鍵の設定は完了です。

接続確認の方法

下記のコマンドを入力しで接続できます。

ssh -T git@github.com

パスフレーズを聞かれるので、設定したパスフレーズを入力します。下記のように表示されれば接続ができました。

Hi rockshop2024! You've successfully authenticated, but GitHub does not provide shell access.

Githubで複数アカウントを使う場合

ここまでの接続方法はGithubが一つの場合です。
2つ以上のアカウントを使い分けたい場合は接続時にアカウント名を明示したり、ローカル上で「.ssh」フォルダ内でconfigファイルを設定する必要があります。

アカウントごとに公開鍵と秘密鍵を作成する。

作り方はここまででと同じですが、鍵を作成すると「id_ed25519」「id_ed25519.pub」となってしまいます。これをそれぞれアカウントごとに任意の名前に変えましょう。

今回は「xxxxx2024」と「xxxxx2024other」というGithubアカウントがあるとします。
なのでアカウント名に合わせて公開鍵と秘密鍵もアカウントごとに作ります。

それぞれの鍵の名前はという感じです。

「秘密鍵:xxxxx2024」「公開鍵:xxxxx2024.pub」
「秘密鍵:xxxxx2024other」「公開鍵:xxxxx2024other.pub」

あとはアカウントごとに作成した公開鍵をGithub上に登録します。

configファイルにアカウントごとの設定情報を記載します

「~/.ssh」フォルダ配下にデフォルトで「config」というファイルがあるので、ここに接続に必要なアカウント情報を記載します。

# ターミナル接続テスト:ssh -T git@xxxxx2024
Host xxxxx2024
    HostName github.com
    User git
    IdentityFile /Users/xxxxxxxx/.ssh/xxxxx2024
    TCPKeepAlive yes
    IdentitiesOnly yes

# ----------------------------

# ターミナル接続用テスト:ssh -T git@xxxxx2024other
Host xxxxx2024other
    HostName github.com
    User git
    IdentityFile /Users/xxxxxxxx/.ssh/xxxxx2024other
    TCPKeepAlive yes
    IdentitiesOnly yes
# ----------------------------

SSH接続の方法も「ssh -T git@github.com」ではなくアカウント名を具体的に指定したコマンドになります。

//ターミナル接続テスト
ssh -T git@xxxxx2024

Githubからローカルへのクローンも下記のような記述になります。

git clone git@[.ssh/configのHost名]:[USER]/[REPOSITRY]

//例
git clone git@xxxxx2024:xxxxx2024/リポジトリ名

以上です。

Githubアカウントが複数ある場合は若干設定が必要なのでちょっと手間ですね。

totop Page Top