GitHub では 2021 年の 8 月 13 日 にパスワード認証が廃止されたので、重い腰をあげて SSH で GitHub にアクセスするように設定します。
ローカルの設定
~/.sshで作業する前提で執筆します。
手始めに.sshディレクトリを作成します。
cd ~/.sshmkdir .sshSSH 用の鍵を作る
GitHubへの接続の際に認証で使用する公開鍵と秘密鍵を作成します。
ハッシュアルゴリズムはed25519を使います。今のメジャーはed25519もしくはecdsaです。
Ed25519鍵は、安全性と高速性を兼ね備えた楕円曲線暗号(ECC)によるデジタル署名アルゴリズム「EdDSA」の一種です。Curve25519という特定の楕円曲線を用い、鍵生成や署名、検証の処理が高速かつ省エネルギーで行える点が特徴です。特にSSH、TLS、GPGなどで広く採用されており、安全性が高く、攻撃耐性にも優れています。
ssh-keygen -t ed25519ssh-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.pemSSH の設定ファイルに書き込む
この後行う 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 configHost github github.com HostName github.com User git IdentityFile ~/.ssh/secret/github.pemGitHub の設定
鍵は作りましたがまだその鍵を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 githubSSH 経由で GitHub のリポジトリをクローン
上同様ssh-configに設定したので、git clone [email protected]:~でも簡単にリポジトリをクローンできるようになりました。
試しに筆者が一番推してるエディターの Neovim をクローンしましょう。
適当なディレクトリに移動して以下のコマンドを実行してください。
実行したらneovimがクローンされていたらもうこの記事はお払い箱です!ご愛読ありがとうございました。