秘密鍵と公開鍵を作成する方法と、ssh-keygenコマンドの使い方についてまとめました。
秘密鍵と公開鍵を作成する
鍵を作成するにはssh-keygen
コマンドを使用します。パスフレーズを指定するとSSH接続する際に入力を求められます。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/username/.ssh/id_rsa): ← 作成される場所。問題なければEnter。 Enter passphrase (empty for no passphrase): ← パスフレーズの入力。省略する場合はそのままEnter。 Enter same passphrase again: ← パスフレーズの再入力。省略した場合はそのままEnter。
秘密鍵 (id_rsa) と公開鍵 (id_rsa.pub)が~/.ssh/
ディレクトリ以下に作成されました。
$ ls ~/.ssh/ id_rsa id_rsa.pub
鍵の種類について -t オプション
上記のコマンドのオプションで明示的に-t rsa
と記述しましたが、これは特に指定する必要ありません。選択できる鍵の種類は次の3種類ですが-t rsa
がデフォルトになっているためです。ちなみにMacのデフォルトOpenSSHではECDSAやED25519鍵は作成できません。
種類 | オプション |
---|---|
SSHプロトコルバージョン1-RSA | -t rsa1 |
SSHプロトコルバージョン2-RSA | -t rsa <デフォルト> |
SSHプロトコルバージョン2-DSA | -t dsa |
SSHプロトコルバージョン1を使う人は今時いないと思うのでオプションは省略しても大丈夫です。
鍵の作成場所とファイル名 -f オプション
作成されるディレクトリのデフォルトは~/.ssh/
で、ファイル名は鍵の種類をRSAにした場合はid_rsa
、DSAにした場合はid_dsa
です。-f <path>
オプションを付けるとディレクトリとファイル名を指定する事ができます。
$ ssh-keygen -t rsa -f /Users/username/sshkey/gitkey ... $ ls ~/sshkey/ gitkey gitkey.pub
ファイル名のみ指定-f gitkey
した場合はカレントディレクトリに作成されます。
または、-f <path>
を省略した場合でも次のタイミングで指定する事ができます。
Enter file in which to save the key (/Users/username/.ssh/id_rsa): /Users/username/sshkey/gitkey
すでに存在する場合は上書きするか確認されます。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/username/.ssh/id_rsa): /Users/username/.ssh/id_rsa already exists. Overwrite (y/n)?
パスフレーズの変更 -p オプション
パスフレーズを変更する場合はssh-keygen -p
を実行して対話的に変更していきます。
$ ssh-keygen -p Enter file in which the key is (/Users/username/.ssh/id_rsa): ← 変更する秘密鍵。問題なければEnter。 Enter old passphrase: ← 今のパスフレーズを入力してEnter。 Key has comment '/Users/username/.ssh/id_rsa' Enter new passphrase (empty for no passphrase): ← 新しいパスフレーズを入力してEnter。 Enter same passphrase again: ← もう一度新しいパスフレーズを入力してEnter。 Your identification has been saved with the new passphrase.
鍵のコメントについて -C オプション
コマンド実行時に-C <value>
オプションを指定するとコメントが付きます。これはあくまでコメントなので特に必須ではありません。ssh-keygen -l
で鍵の種類とコメントが確認できます。
$ ssh-keygen -f testkey -C test@gmail.com ... $ ssh-keygen -l -f testkey 2048 3f:62:d9:9d:08:e9:9a:18:a4:9f:cf:6c:44:72:e6:06 test@gmail.com (RSA)