1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubにSSHで接続する

Last updated at Posted at 2021-11-06

はじめに

これまでlocalからGitHubへのpushはHTTPSで接続していましたが
GitHub公式ドキュメントを参考にSSH接続も設定できたので
記録として残しておきます。

GitHub公式ドキュメント

OS

  • macOS Catalina(10.15.7)

作業内容

 1. SSHキーの作成
 2. SSHキーをssh-agentに登録する
 3. GitHubにSSHキーを登録する

 最後に通信テスト

1. SSHキーの作成

ターミナルからssh-keygenコマンドでed25519形式で

  • 秘密鍵
  • 公開鍵

の2つを生成する。

SSHキーの種類には、よりセキュアなRSAの4096ビット形式もあるようだが、
GitHubの公式ドキュメントでは、何故かレガシーなシステムとして記載があるので
ひとまずed25519形式で作成していく。

個人的に、下記のようにざっくり理解しておく事にした
セキュリティ面: RSA(4096bit) -> データ量が多いため重い
パフォーマンス速度: ed25519 -> データ量が軽い

ターミナル

# 既存のSSHキーが存在するか確認
% ls -al ~/.ssh

# 未使用の無駄なSSHキーがあれば削除しておく
% rm -rf ~/.ssh/未使用のキー

# ed25519形式のSSHキーを作成する
# (メールアドレスはGitHubに登録しているものにする)
% ssh-keygen -t ed25519 -C "your_email@example.com"

 ↓ 質問に答えていく

# SSHキーの保存先パスとファイル名を決める
#  -> そのままEnterと押すと()内がデフォルトとなる 
#    ※ 今回はGitHub用のために末尾を「_github」としている
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_ed25519): /Users/ユーザー名/.ssh/id_ed25519_github

# SSHキーのパスフレーズ設定
Enter passphrase (empty for no passphrase): 任意のパスワードを入力

# パスフレーズの再確認
Enter same passphrase again: 再度パスワードを入力

 ↓ 入力が完了すると、秘密鍵と公開鍵が生成される

Your identification has been saved in /Users/ユーザー名/.ssh/id_ed25519_github.
Your public key has been saved in /Users/ユーザー名/.ssh/id_ed25519_github.pub.

# 生成されたSSHキーの確認
% ls -al ~/.ssh

参考まで: RSA(4096bit)形式の作成

ターミナル

# RSA4096ビット形式のSSHキーを作成する
# (メールアドレスはGitHubに登録しているものにする)
% ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

 ↓ 質問に答えていく
# SSHキーの保存先パスとファイル名を決める
#  -> そのままEnterと押すと()内がデフォルトとなる 
#    ※ 今回はGitHub用のために末尾を「_github」としている
Enter file in which to save the key (/Users/ユーザー名/.ssh/id_rsa): /Users/ユーザー名/.ssh/id_rsa_github

# SSHキーのパスフレーズ設定
Enter passphrase (empty for no passphrase): 任意のパスワードを入力

# パスフレーズの再確認
Enter same passphrase again: 再度パスワードを入力

 ↓ 入力が完了すると、秘密鍵と公開鍵が生成される

Your identification has been saved in /Users/ユーザー名/.ssh/id_rsa_github.
Your public key has been saved in /Users/ユーザー名/.ssh/id_rsa_github.pub.

# 生成されたSSHキーの確認
% ls -al ~/.ssh

2. SSHキーをssh-agentに登録する

ターミナル

# バックグラウンドでssh-agentを起動する
% eval "$(ssh-agent -s)"

# VIMで.ssh/configを開いて設定しておく
% vi ~/.ssh/config 

 ↓ 「i」キーを押してインサートモードに切り替えて追記

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github

# 秘密鍵をssh-agentに登録
% ssh-add ~/.ssh/id_ed25519_github

3. GitHubにSSHキーを登録する

あとは、生成できた公開鍵のコードをコピーして
GitHub上にそのままペーストして登録する。

ターミナル

# 公開鍵をクリップボードにコピーする
% pbcopy < ~/.ssh/id_ed25519_github.pub

以降はGitHub画面でGUI操作で設定を行う

スクリーンショット 2021-11-06 18.05.21.png

スクリーンショット 2021-11-06 18.06.08.png

スクリーンショット 2021-11-06 18.03.11.png

スクリーンショット 2021-11-06 18.08.06.png

スクリーンショット 2021-11-06 18.09.56.png

以上で全ての作業が完了する。

SSH通信の確認

ターミナル

# SSH通信の確認する
% ssh -T git@github.com

Hi ユーザー名! You've successfully authenticated, but GitHub does not provide shell access.

終わりに

2021年8月13日にGitHubがHTTPSのパスワード認証が廃止されたようですが
私の場合、git pushコマンドが通っていたのは何故なんでしょう…
(いまだにHTTPSで通ってしまう)

恐らく、初期設定した記憶が曖昧なんですが、MacOSなんで
下記ツールがパスワード管理していて上手く機能しているんですかね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?