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


ローカルの設定
~/.ssh
で作業する前提で執筆します。
手始めに.ssh
ディレクトリを作成します。
cd ~/.sshmkdir .ssh
SSH 用の鍵を作る
GitHubへの接続の際に認証で使用する公開鍵と秘密鍵を作成します。
ハッシュアルゴリズムはed25519
を使います。今のメジャーはed25519
もしくはecdsa
です。
Ed25519鍵は、安全性と高速性を兼ね備えた楕円曲線暗号(ECC)によるデジタル署名アルゴリズム「EdDSA」の一種です。Curve25519という特定の楕円曲線を用い、鍵生成や署名、検証の処理が高速かつ省エネルギーで行える点が特徴です。特にSSH、TLS、GPGなどで広く採用されており、安全性が高く、攻撃耐性にも優れています。
ssh-keygen -t ed25519
ssh-keygen
コマンドを実行すると色々聞かれますがこの項目は任意ですので、特に気にせずエンター連打しちゃいます。
$ 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_ed25519Your public key has been saved in /Users/hidemaru/.ssh/id_ed25519.pubThe key fingerprint is:The key's randomart image is:+--[ED25519 256]--+|. .o. Eo... ||....+. . o ||++.*.. . o||=++ =.. . . . ||*.=+++. S . . .||o+.B+.+o.. . || o *=oo || .o+ || |+----[SHA256]-----+
こうして~/.ssh
にid_ed25519
(秘密鍵)とid_ed25519.pub
(公開鍵)のキーペアが作成されました。
SSH 鍵の名前を変更する
自分は SSH 鍵を細かく管理しているので、名前を分けて保存しております。
しっかりと鍵を管理しないと後々困ってしまったので;ー;
公開鍵と秘密鍵をそれぞれ分けるディレクトリを作成します。
mkdir secret public
そして公開鍵と秘密鍵をそれぞれのディレクトリに配置します。
mv id_ed25519 secret/github.pemmv id_ed25519.pub public/github.pub
余談ですがファイル名をid_ed25519
の初期名のままで運用していたら、新しくSSH鍵を作った際に既存の秘密鍵が上書きされてしまいサーバーに接続できなくなってしまいました。(戒め)
秘密鍵に権限を設定する
あらかじめSSH の秘密鍵に権限を正しいものに指定しないと SSH クライアントに叱られてしまいます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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
叱られないようにするには、秘密鍵をreadonly
に設定しました。
chmod 600 secret/github.pem
SSH の設定ファイルに書き込む
この後行う GitHub に公開鍵を設定した前提で話すのですが、今の段階でもこのように GitHub にアクセス出来ますが。
PTY allocation request failed on channel 0Hi ひでまるOwO! You've successfully authenticated, but GitHub does not provide shell access.Connection to github.com closed.
これではgit
でクローンする際に SSH で認証してくれないので、.ssh/config
を配置する必要があります。
ssh-config
を テキストエディタにて開いたら、以下を貼り付けてください。
vim config
Host github github.com HostName github.com User git IdentityFile ~/.ssh/secret/github.pem
GitHub の設定
鍵は作りましたがまだその鍵をGitHubにアップロードしていないのでリポジトリをクローンするためには登録する必要があります。
公開鍵を GitHub に設定
このページにアクセスしてください。


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

にはGitHub Key
と入力て、Key
にはgithub.pub
ファイルの中身をコピーして項目に貼り付けました。
自分の環境はmacOSなのでこのコマンドで中身をコピーしました
cat .ssh/public/github.pub | pbcopy

空欄を埋めたのち、Add SSH Key
をクリックして、パスワードの入力が終わり次第公開鍵が追加され準備が完了になります。
試してみる
やっと準備を終えたので、実際に GitHub に SSH アクセス及びリポジトリのクローンをしてみます。
GitHub に SSH アクセス
ssh-config
に設定したので、このコマンドで手軽に GitHub に SSH を飛ばせます。
ssh github
SSH 経由で GitHub のリポジトリをクローン
上同様ssh-config
に設定したので、git clone [email protected]:~
でも簡単にリポジトリをクローンできるようになりました。
試しに筆者が一番推してるエディターの Neovim をクローンしましょう。
適当なディレクトリに移動して以下のコマンドを実行してください。
実行したらneovim
がクローンされていたらもうこの記事はお払い箱です!ご愛読ありがとうございました。