Windowsでssh-keygenから秘密鍵と公開鍵をつくる

ssh-keygenでSSH鍵の作成が上手くいかず、ハマリしました。

仮に c:/git/bin/ に ssh-keygen.exe があり
作成した鍵を c:/Users/[ユーザ名]/ へ .ssh というディレクトリを作成し、そこへ
秘密鍵を id_rsa 、公開鍵を id_rsa.pub として保存する場合の流れです。

まずは失敗した流れを。(成功した手順へショートカット

ssh-keygen.exeのあるディレクトリへ移動し、鍵を生成するコマンド。

$ cd c:/git/bin/
$ ssh-keygen -t rsa -C "なにかコメント"

するとメッセージが表示され
これから生成する鍵のファイルを保存する場所をきかれます。

$ cd c:/git/bin/
$ ssh-keygen -t rsa -C "なにかコメント"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):

ここで、.sshディレクトリの場所を指定してEnter

$ cd c:/git/bin/
$ ssh-keygen -t rsa -C "なにかコメント"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):c:/Users/[ユーザ名]/.ssh/id_rsa

パスフレーズに入力と確認入力を求められます。
(パスフレーズが要らない場合は何も入力せずにEnter押下でも先に進めます)

$ cd c:/git/bin/
$ ssh-keygen -t rsa -C "なにかコメント"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):c:/Users/[ユーザ名]/.ssh/id_rsa
Enter passphrase (empty for no passphrase):

入力すると、メッセージが表示され、何だか終わったっぽい!

$ cd c:/git/bin/
$ ssh-keygen -t rsa -C "なにかコメント"
Generating public/private rsa key pair.
Enter file in which to save the key (//.ssh/id_rsa):c:/Users/[ユーザ名]/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
open c:/Users/[ユーザ名]/.ssh/id_rsa failed: No such file or directory.
Saving the key failed: c:/Users/[ユーザ名]/.ssh/id_rsa.

c:/Users/[ユーザ名]/.ssh/ を見に行ってみると
はい、失敗…。何もないわ。

open c:/Users/[ユーザ名]/.ssh/id_rsa failed: No such file or directory.

ですよね、最初からそんなディレクトリないね。
自動で作ってくれるとか都合良すぎたね。

成功編

失敗していた原因は
id_rsa(id_rsa.pub)を設置するディレクトリを
あらかじめ用意してからssh-keygen.exeを実行していなかった
ことでした。

自動でディレクトリは生成できないのがわかりましたので、まずは .ssh ディレクトリの生成から。

Windowsのエクスプローラからでは「.」で始まるディレクトリを設置できませんので
コマンドプロンプトで .ssh を作りたいディレクトリまで移動し、mkdirコマンドを実行します。

$ cd c:/Users/[ユーザ名]/
$ mkdir .ssh

.sshディレクトリができたら、先ほどのようにssh-keygen実行。
ssh-keygen.exeのあるディレクトリまで移動するのが面倒だったので、フルパスで起動しました。

$ c:/git/bin/ssh-keygen -t rsa -C "なにかコメント"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/[ユーザ名]/.ssh/id_rsa): c:/Users/[ユーザ名]/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

成功するとこんなメッセージが表示され、指定したディレクトリへ
秘密鍵として id_rsa が、公開鍵として id_rsa.pub が生成されています。

Your identification has been saved in c:/Users/[ユーザ名]/.ssh/id_rsa.
Your public key has been saved in c:/Users/[ユーザ名]/.ssh/id_rsa.pub.
The key fingerprint is:
a7:dc:88:(中略):e7:52:5f [なにかコメント]

関連記事

Pocket