💭

秘密鍵・公開鍵の生成及びgithub利用

2023/03/01に公開約3,400字

はじめに

今まで必要に応じて、都度都度検索をかけて解決していたので、個人的な備忘録として残します
基本は、こちらを参考にしております(他のサイトも参考にしております)
https://qiita.com/shizuma/items/2b2f873a0034839e47ce

環境は、chrome bookを利用しています

公開鍵・秘密鍵の作成

基本、鍵が入ってるフォルダはこちらになります

cd ~/.ssh

また、クライアントとしてSSHを利用する場合、このディレクトリにある秘密鍵がデフォルトで利用されます

鍵生成コマンド

ssh-keygen

オプションは色々ありますが、デフォルトはこれで大丈夫と思っています
(参考サイトでは、-tオプションがありましたが、デフォルトが「rsa」だったので不要と判断しました)

オプション一覧

ssh-keygenの主なオプション

短いオプション 意味
-t 方式 作成する鍵の暗号化形式を「rsa」(デフォルト)、「dsa」「ecdsa」「ed25519」から指定する
-b ビット数 作成する鍵のビット数を指定する(RSA形式の場合、デフォルトは2048bit)
-a ラウンド数 ed25519形式で生成する際のKDF(Key Derivation Function)ラウンド数を指定する。数が大きいと暗号の耐性が上がるが、処理に時間がかかるようになる
-f ファイル ファイルを指定する(生成または読み出すファイルを指定)。ただし、併用するオプションによって意味が変化する(通常は鍵ファイル)
-p パスフレーズを変更する(対話形式で元のパスフレーズを1回、新しいパスフレーズを2回指定する)。元のパスフレーズは「-P」オプション、新しいパスフレーズは「-N」オプションで指定可能
-N パスフレーズ 新しく設定するパスフレーズを指定する
-P パスフレーズ 元のパスフレーズを指定する
-C コメント コメントを指定する(デフォルトは「ユーザー名@ホスト名」。「-C ""」でコメントを削除)
-E 形式 鍵の指紋(fingerprint)を表示する際の形式を「sha256」(デフォルト)か「md5」で指定する

ssh-keygenの主なオプション(known_hosts関連)

短いオプション 意味
-F ホスト名 指定したホスト名を、鍵ファイルとともに保存されている「known_hosts」ファイルから探して表示する(-fオプションでknown_hostsファイルを指定可能、-lオプションで対応する指紋を表示可能)
-H 「known_hosts」ファイルを更新する(-fオプションでknown_hostsファイルを指定可能、元のファイルは拡張子.oldで保存される)
-R ホスト名 指定したホストに属する鍵を全て取り除く(-fオプションでknown_hostsファイルを指定可能)
-r ホスト名 指定したホストに対応する指紋を表示する(-fオプションでknown_hostsファイルを指定可能)

ssh-keygenの主なオプション(変換関連)

短いオプション 意味
-i 暗号化されていない秘密鍵ファイルまたは公開鍵ファイルを読み出し、OpenSSH互換形式に変換してから標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定、-mオプションで変換元の鍵の形式を指定できる)
-e OpenSSH形式の秘密鍵ファイルまたは公開鍵ファイルを読み出し、RFC 4716形式または-mオプションで指定した形式で標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定)
-m 形式 「-i」オプションで入力する鍵の形式を、「-e」オプションで出力する鍵の形式を、「RFC4716」(デフォルト)、「PKCS8」「PEM」から指定する
-y OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する

ssh-keygenの主なオプション(証明書関連)

短いオプション 意味
-s CA鍵 指定したCA鍵で公開鍵に署名をする
-I 秘密鍵 公開鍵に証明する際に使用する鍵を指定する
-h 鍵に署名する際、ユーザー証明書の代わりにホスト証明書を作成する
-D ライブラリ PKCS#11トークンのライブラリを指定し、公開鍵をダウンロードする(※1)
-n 名前 証明書に含めるユーザー名またはホスト名を指定する。名前は複数指定可能
-O オプション 鍵に署名する際に使用する証明書のオプションを指定する(詳細は「man ssh-keygen」の「CERTIFICATES」セクション参照)
-V 期間 証明書に署名する際の有効期間を指定する。「YYYYMMDD」または「YYYYMMDDHHMMSS」で期限切れとなる日時を指定するか、「:」で区切って「開始:終了」のように指定する。「+」「-」記号で期間を示すことも可能
-z シリアル番号 証明書に埋め込むシリアル番号を指定する
-L 証明書の内容を表示する
-k KRL(Key Revocation List、鍵失効リスト)ファイルを生成する(「-f」で出力ファイルを指定、「-u」を併用するとファイルに追加、「-s」でCA鍵のパス、「-z」でシリアル番号を指定)
-Q -fでKRLファイルを指定し、鍵がKRLで失効したものとして指定されているかを検査する(「-Q -f KRLファイル 対象ファイル」で実行)

鍵の名前変更なし、パスフレーズなしで実行すると、以下のように実行され、最後のイメージみたいなのが表示されていれば完了となります

先程実行された内容のこの部分が、公開鍵の出力先となります

鍵の設置

まずは鍵を取得します(クリップボードへコピーしたいので、xselを利用します)
インストール

sudo apt install xsel

鍵をクリップボードにコピー

cat ~/.ssh/id_rsa.pub | xsel --clipboard --input

githubへの登録

https://github.com/settings/ssh
上記のURLにて登録が可能です

画面右上の「Add SSH key」のボタンを押します

画面のkeyにクリップボードの内容をコピーし、(タイトルは、自分がわかり易い名前で登録)
「Add SSH key」のボタンを押して登録します

確認

ssh -T git@github.com

以下のように帰ってくれば成功となります

Discussion

ログインするとコメントできます