Macで秘密鍵と公開鍵を作成する (ssh-keygenの使い方)

スポンサーリンク

秘密鍵と公開鍵を作成する方法と、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)

参考サイト

 SSH-KEYGEN (1)