GitHubにSSHで接続したい!
ひでまるブログ

GitHubにSSHで接続したい!

article cover

ひでまる

2022/12/16に公開

GitHub では 2021 年の 8 月 13 日 にパスワード認証が廃止されたので、重い腰をあげて SSH で GitHub にアクセスするように設定します。

Token authentication requirements for Git operations
Beginning August 13th, 2021, we will no longer accept account passwords when authenticating Git operations on GitHub.com.
Token authentication requirements for Git operations favicon https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/
Token authentication requirements for Git operations

ローカルの設定

~/.sshで作業する前提で執筆します。

手始めに.sshディレクトリを作成します。

Terminal window
cd ~/.ssh
mkdir .ssh

SSH 用の鍵を作る

GitHubへの接続の際に認証で使用する公開鍵と秘密鍵を作成します。
ハッシュアルゴリズムはed25519を使います。今のメジャーはed25519もしくはecdsaです。

Ed25519鍵は、安全性と高速性を兼ね備えた楕円曲線暗号(ECC)によるデジタル署名アルゴリズム「EdDSA」の一種です。Curve25519という特定の楕円曲線を用い、鍵生成や署名、検証の処理が高速かつ省エネルギーで行える点が特徴です。特にSSH、TLS、GPGなどで広く採用されており、安全性が高く、攻撃耐性にも優れています。

Terminal window
ssh-keygen -t ed25519

ssh-keygenコマンドを実行すると色々聞かれますがこの項目は任意ですので、特に気にせずエンター連打しちゃいます。

Terminal window
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/hidemaru/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/hidemaru/.ssh/id_ed25519
Your public key has been saved in /Users/hidemaru/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Agh+Y97pM52YJEUMmyt4diYDliIrkp/1djhX9UcMABY [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|. .o. Eo... |
|....+. . o |
|++.*.. . o|
|=++ =.. . . . |
|*.=+++. S . . .|
|o+.B+.+o.. . |
| o *=oo |
| .o+ |
| |
+----[SHA256]-----+

こうして~/.sshid_ed25519(秘密鍵)とid_ed25519.pub(公開鍵)のキーペアが作成されました。

SSH 鍵の名前を変更する

自分は SSH 鍵を細かく管理しているので、名前を分けて保存しております。
しっかりと鍵を管理しないと後々困ってしまったので;ー;

公開鍵と秘密鍵をそれぞれ分けるディレクトリを作成します。

Terminal window
mkdir secret public

そして公開鍵と秘密鍵をそれぞれのディレクトリに配置します。

Terminal window
mv id_ed25519 secret/github.pem
mv id_ed25519.pub public/github.pub

余談ですがファイル名をid_ed25519の初期名のままで運用していたら、新しくSSH鍵を作った際に既存の秘密鍵が上書きされてしまいサーバーに接続できなくなってしまいました。(戒め)

秘密鍵に権限を設定する

あらかじめSSH の秘密鍵に権限を正しいものに指定しないと SSH クライアントに叱られてしまいます。

Terminal window
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '/Users/hidemaru/.ssh/secret/github.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/Users/hidemaru/.ssh/secret/github.pem": bad permissions
[email protected]: Permission denied (publickey).

叱られないようにするには、秘密鍵をreadonlyに設定しました。

Terminal window
chmod 600 secret/github.pem

SSH の設定ファイルに書き込む

この後行う GitHub に公開鍵を設定した前提で話すのですが、今の段階でもこのように GitHub にアクセス出来ますが。

Terminal window
ssh [email protected] -i ~/.ssh/secret/github.pem
PTY allocation request failed on channel 0
Hi ひでまるOwO! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

これではgitでクローンする際に SSH で認証してくれないので、.ssh/configを配置する必要があります。
ssh-configを テキストエディタにて開いたら、以下を貼り付けてください。

Terminal window
vim config
Host github github.com
HostName github.com
User git
IdentityFile ~/.ssh/secret/github.pem

GitHub の設定

鍵は作りましたがまだその鍵をGitHubにアップロードしていないのでリポジトリをクローンするためには登録する必要があります。

公開鍵を GitHub に設定

このページにアクセスしてください。

Build software better, together
GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.
Build software better, together favicon https://github.com/settings/ssh/new
Build software better, together

のちに 2 つの項目があると思うので、そちらを埋めます。

SSH Key Image

にはGitHub Keyと入力て、Keyにはgithub.pubファイルの中身をコピーして項目に貼り付けました。

自分の環境はmacOSなのでこのコマンドで中身をコピーしました

Terminal window
cat .ssh/public/github.pub | pbcopy
New SSH Key Image

空欄を埋めたのち、Add SSH Keyをクリックして、パスワードの入力が終わり次第公開鍵が追加され準備が完了になります。

試してみる

やっと準備を終えたので、実際に GitHub に SSH アクセス及びリポジトリのクローンをしてみます。

GitHub に SSH アクセス

ssh-configに設定したので、このコマンドで手軽に GitHub に SSH を飛ばせます。

Terminal window
ssh github

SSH 経由で GitHub のリポジトリをクローン

上同様ssh-configに設定したので、git clone [email protected]:~でも簡単にリポジトリをクローンできるようになりました。
試しに筆者が一番推してるエディターの Neovim をクローンしましょう。
適当なディレクトリに移動して以下のコマンドを実行してください。

Terminal window
git clone [email protected]:neovim/neovim.git

実行したらneovimがクローンされていたらもうこの記事はお払い箱です!ご愛読ありがとうございました。

Other articles