今回はクライアント環境からSSHでGitHubに接続します。
公式サイトの関連資料は次の通りです。
以下、目次となります。
全体の流れ
本記事で行う全体的な流れです。
- 秘密鍵、公開鍵のペアを作成する。
- GitHubに公開鍵を登録する。
- GitHubにお試し接続する。
- 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(秘密鍵)
秘密鍵は重要なので厳重に使いましょう。
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をやめて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に公開鍵が設定できて疎通さえ大丈夫なら、問題なくクリア出来ると思います。
最後までご覧頂き、ありがとうございました!
コメント