ssh key on macOS¶
リモート接続に使用するSSH鍵の作成と管理¶
macOSはUNIX系なので、ほとんどLinuxと同じです。
鍵の種類と推奨¶
2024年現在、SSH接続で鍵認証する際に使用する暗号方式と鍵長について、電子政府関連の基準を参考に推奨するアルゴリズムと鍵長を次にリストしました。
- ED25519(推奨): ビットセキュリティ=128
- RSA(2048bit以上の鍵長を使用の事): ビットセキュリティ=112(鍵長2048bit)、ビットセキュリティ=128(鍵長3072bit)
CRYPTREC (Cryptography Research and Evaluation Committees) が策定する「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準 Ver. 1.0」より
評価対象とするアルゴリズムに対して最も効果的な攻撃 手法を用いたときに、どの程度の計算量があれば解読できるか(解読計算量 4)に関連付けられ た値で、鍵長とは別に求められる。表記上、解読計算量が 2x である場合に“x ビットセキュリテ ィ”という。
112ビットセキュリティは、2024年現在ではより高度なセキュリティへの移行期間(2022-2030)とされており、128ビットセキュリティ以上を使用すべきです。
公開鍵暗号では、128ビットセキュリティを確保するには、RSAの3072bit鍵、ED25519、ECDSA P256が必要になります。
DSAは、SSHプロトコルの実装 OpenSSH で2025年に廃止(削除)が予定されており、今では使用しないべきです。
ECDSAは、特許の存在、実装の複雑さ、乱数生成の品質に依存、バックドアの懸念などが言われています。
鍵の生成¶
ホームディレクトリ下に、.sshディレクトリがあるか確認します。
ssh-keygenコマンドで公開鍵・秘密鍵のペアを生成します。ssh-keygen -t <鍵の種類> -C <コメント>
コメントは通常は自身のemailアドレスを記述します。
~% ssh-keygen -t ed25519 -C torutk@example.com Generating public/private ed25519 key pair. Enter file in which to save he key (/Users/<ユーザー名>/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: :
次の2つのファイルが生成されます。
~% ls .ssh id_ed25519 id_ed25519.pub
- 鍵の種類を省略するとRSAが選択、鍵長は2048bit
パスフレーズの変更¶
ssh-keygenコマンドに-pオプションと、秘密鍵のファイルへのパスを-fオプションで指定して実行すると、パスフレーズの変更ができます。
~% ssh-keygen -p -f ~/.ssh/ed25519 Enter old passphrase: XXXXXXXX Key has comment 'torutk@expample.com' Enter new passphrase (empty for no passphrase): XXXXXXXX Enter same passphrase again: XXXXXXXX Your identification has been saved with the new passphrase.
鍵の確認¶
生成されたファイルの鍵の長さとアルゴリズムの確認¶
~% ssh-keygen -l -f ~/.ssh/id_ed25519.pub 256 SHA256:ABCDEFGHIJK... (ED25519)
- 先頭の数値が鍵の長さ(256)で、末尾の括弧内がアルゴリズム(ED25519)
秘密鍵と公開鍵のペアの確認¶
ssh-keygen -y
で、秘密鍵から公開鍵を生成することができます。これを公開鍵ファイルと比べることで、秘密鍵と公開鍵のファイルペアかどうかを確認します。