FrontWorks.dev

【Github】GithubのSSH設定方法のおさらい

投稿日
最終更新日

GithubがSSH接続を基本にしてから結構経ちますが、新PC等で設定をする際に毎回調べているような気がしているので一度おさらいをしようと思います。

SSH接続の概要

SSH(Secure Shell)は、安全な通信を行うためのプロトコルです。

Githubでは、公開鍵と秘密鍵を使用して接続を認証します。

SSH接続を利用するメリット

  • セキュリティの向上

    • 通信が暗号化されるため、第三者に内容を傍受されるリスクが減少

  • 利便性の向上

    • 毎回パスワードを入力せずに済む

  • 自動化が容易

    • CI/CDパイプラインの設定が簡単になる

個人的には2つ目の「利便性の向上」が特に有用です。一度設定しておけばパスワード不要なので楽ですね。

昨今は何かと自動化することが多いのでその辺も使いやすくなるのは良いですよね。

では、次から設定方法をまとめていきます。

SSH鍵を生成する

SSH接続を設定するには、まずローカル環境にSSH鍵を生成します。

以下のコマンドをターミナルで実行しましょう。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

オプションに色々追加していますが、この辺は適宜変更してください。

  • -t rsa

    • 鍵の種類(今回はRSA)

  • -b 4096

    • 鍵の長さ(推奨は 4096ビットのようです)

  • -C ~~

    • Githubアカウントのメールアドレス

上記の設定で実行すると対話形式で鍵を作ります。

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

まずは、鍵を保存するパスを指定します。(デフォルトで良ければそのままEnter)

次にパスフレーズを設定します(空でもOK)

鍵が生成されると、以下の2つのファイルが生成されます。

  • ~/.ssh/id_rsa

    • 秘密鍵

  • ~/.ssh/id_rsa.pub

    • 公開鍵

秘密鍵は漏洩しないように注意してください。

ここで生成された公開鍵をGithubに登録していきます。

公開鍵をGithubに登録する

まずは生成した公開鍵の内容をコピーしましょう。

次のコマンドをターミナルで実行します。

pbcopy < ~/.ssh/id_rsa.pub

pbcopy を使用してクリップボードにファイルの内容をコピーします。

Github側の設定

  1. Githubにログイン後、画面右上のプロフィールアイコンをクリックして、Settingを選択

  2. SettingページのサイドメニューからSSH and GPG keysをクリック

  3. New SSH keyボタンをクリック

  4. Title欄に判別しやすい名前を入力(例:"My Laptop")

  5. 先程コピーした公開鍵をそのままKey欄に貼り付けてAdd SSH keyをクリック

これでGithub側での登録が完了です。

接続確認

では最後に接続確認をしてみましょう。

以下のコマンドを実行してください。

ssh -T git@github.com

初回接続時には以下のようなメッセージが表示されると思いますが、`yes`を入力してください。

The authenticity of host 'github.com (IP address)' can't be established.
RSA key fingerprint is SHA256:...
Are you sure you want to continue connecting (yes/no)?

接続に成功した場合は次のようなメッセージが表示されます。

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

これでSSH設定は完了です!

エイリアス登録

先程までの状態で問題はありませんが、複数の接続情報を管理するためにエイリアス登録をすることができます。

~/.ssh/config ファイルを開いて設定してみましょう。このファイルがない場合は新しく作成して下さい。

vim ~/.ssh/config

以下の内容を記載します。

# GitHubデフォルトアカウント
Host github
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa

記載した内容は以下です。

  • Host

    • エイリアス名(任意)

  • HostName

    • 接続先のホスト名

  • User

    • 使用するユーザー(Githubでは常にgitです)

  • IdentityFile

    • 使用する秘密鍵のパス

他にもありますが、最低限これを入力すれば使えるようになると思います。

接続確認

先程は以下のような内容で接続していました。

ssh -T git@github.com

今回はエイリアス名で接続します。

ssh -T github // 先程Hostに記載したエイリアス名

これで先程と同じ成功のメッセージが表示されれば完了です。

エイリアス登録のメリット

  • 鍵の使い分け

    • プライベートと仕事用など、異なる鍵を明確に管理できる

  • 短縮URL

    • 長い接続コマンドを簡略化

  • 複数アカウントの管理

    • 複数のGithubアカウントを切り替えるのが容易

特に2つ目の入力内容を短縮できるのが個人的にとても大きいです。

毎回長いURLを入力するのは手間ですから...

よくあるトラブルと対処法

接続時にPermission deniedと表示される

この表示が出る場合はSSHエージェントに鍵が追加されていない可能性があるようです。

(ちなみに私はなったことはないです。)

以下の内容をターミナルで入力してみましょう。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

もし、上記を試しても変化がなければGithubに正しく公開鍵が登録されているか再度確認してください。

まとめ

最近ではSSHは必須の要素でありますが、頻繁に設定するわけではないので(私の場合)忘れてしまいますよね。

最初は少し手間に感じるかもしれないですが、この手順で行えば多くの作業を効率化できるのでぜひお試しください!

ちなみに...

今やったことはGithub CLIというツールを使用すれば簡単に設定することができます。

キーを生成して、登録して、、、という作業は一切不要で指示に従って進めれば瞬時にGithubにSSH鍵を登録できます。

こちらに関しての記事も近いうちに公開しますので乞うご期待!

タグ