GitHub sshを使った接続の流れ

Git
この記事は約6分で読めます。
記事内に広告が含まれています。

今回はクライアント環境からSSHでGitHubに接続します。

公式サイトの関連資料は次の通りです。

SSH を使用した GitHub への接続 - GitHub Docs
セキュリティで保護されていないネットワーク経由でセキュリティで保護されたチャネルを提供する Secure Shell プロトコル (SSH) を使用して、GitHub に接続できます。

以下、目次となります。

全体の流れ

本記事で行う全体的な流れです。

  1. 秘密鍵、公開鍵のペアを作成する。
  2. GitHubに公開鍵を登録する。
  3. GitHubにお試し接続する。
  4. GitHubからSSH接続でCloneする。

実践

早速、流れに沿って実施してみます。

秘密鍵、公開鍵のペアを作成

ssh-keygenコマンドを使います。

# 実行
ssh-keygen -t rsa

# 移行は基本的にEnterでOK
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxxxx/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/xxxxx/.ssh/id_rsa
Your public key has been saved in /c/Users/xxxxx/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:w+ImgLkdyOcjXohuf3YTf9adj7uhVeLl0794LLIYzyz xxxxx@AAAAA
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|                 |
|.+     .         |
|+.o.  . S     . o|
|.o+o . o .   . =.|
|oo.+. o o.  . *.+|
|o.o .=.oo.o+ =.Bo|
|.o..o o+.Eo.+.*+=|
+----[SHA256]-----+

この操作によって「~/.ssh」配下に次の鍵が作られます。

  • id_rsa.pub(公開鍵)
  • id_rsa(秘密鍵)

秘密鍵は重要なので厳重に使いましょう。

パスフレーズ

鍵の作成時にパスフレーズを設定した場合はどうなるのか?
→ SSH接続時にパスフレーズを入力しないとSSHプログラムが秘密鍵を読み込めずに、接続できなくなります。つまり、鍵による所持認証に加えて「記憶認証」を追加した多要素認証が出来るようになるってことです。

GitHubに公開鍵を登録

GitHubにログインして個人設定→SSH and GPG Keysに公開鍵を登録します。

cat id_rsa.pub

で公開鍵の内容を出力してコピペすればOKです。Titleは適当に。

GitHubにお試し接続

vi ~/.ssh/configで次のように設定しておきます(一例です)。

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

さっそくsshでgithub.comに接続してみます。

# 実行
ssh -T git@github.com

# 出力例
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:w+ImgLkdyOcjXohuf3YTf9adj7uhVeLl0794LLIYzyz.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi Na7log! You've successfully authenticated, but GitHub does not provide shell access.

無事に接続できました。

※初回生成時は本当に正しい接続先か確認が求められます。
→ 鍵生成時に出力されたフィンガープリント(指紋)と一致するはずです。

※鍵生成時にパスフレーズを設定していた場合は、次のようにパスフレーズの入力も求められます。
→ Enter passphrase for key ‘/c/Users/xxxxx/.ssh/id_rsa’:

どうしても接続できない・・・。どうすれば・・・。

公式サイトのトラブルシュート記事を張っておきます。

SSH のトラブルシューティング - GitHub Docs
GitHub に接続して認証するために SSH を使っている場合、予期しない問題が起きてトラブルシューティングしなければならないことがあります。

環境によっては出来ない場合もあるみたいなので、そんときはsshをやめてhttps接続に切り替えましょう。

GitHubからSSH接続でClone

テスト接続できていれば問題なくCloneできるはずです。

なお、Organization&SSOを使っている場合は、GitHubの公開鍵設定のところで、指定のOrganizationを許可しておきましょう。

sshでクローンする場合は次の書式となります。
git clone ssh://git@ssh.github.com/リポジトリパス

# 実行
git clone ssh://git@ssh.github.com/OrgX/test.git

# 出力例
Cloning into 'test'...
Enter passphrase for key '/c/Users/xxxxx/.ssh/id_rsa':
remote: Enumerating objects: 34, done.
remote: Counting objects: 100% (34/34), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 34 (delta 8), reused 19 (delta 3), pack-reused 0
Receiving objects: 100% (34/34), 122.73 KiB | 383.00 KiB/s, done.
Resolving deltas: 100% (8/8), done.

無事にCloneできました!

まとめ

本記事ではSSHを使ってGitHub.comに接続してCloneまでを行う方法についてご紹介しました。SSHによる接続方法自体は昔からの作法どおりのため、GitHub.comに公開鍵が設定できて疎通さえ大丈夫なら、問題なくクリア出来ると思います。

最後までご覧頂き、ありがとうございました!

コメント

Top
タイトルとURLをコピーしました