SSH2 のフォーマット変換

先日の、『git のリポジトリssh を利用してアクセスできるようにする』というエントリーから微妙に続いています.

私の作業環境は mac なので、sshキーの生成を ssh-keygen を利用していたのですが、共同作業をして頂いている方が windows 環境なもので、SSHキーの交換に少し困りました.

頂いた公開鍵を見てみると以下の様なフォーマットになっていました.

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "${コメント文}"
${キーの文字列}
---- END SSH2 PUBLIC KEY ----

ssh-keygenを利用してキーを作成した場合

ssh-rsa ${キーの文字列} ${コメント文}

となっているのでずいぶんと形が違います.

最初、authorized_keys に整形して書いてしまえばいいのか?なんてことも頭をよぎったのですが、調べてみたところキーの変換を行う必要があるようですね....

キーの変換は

ssh-keygen -i -f ${展開してもらったファイル} > ${出力先}

といった感じに行いました.

あとは変換後のキーをサーバ上の authorized_keys に書き加えれば ssh アクセスが出来るという感じになります.

以下、調べた情報をメモとして残しておきます

SSHプロトコルとサポート暗号化方式

SSH暗号化方式には RSA方式、DSA方式が存在する.

SSHプロトコルバージョンによりサポートする暗号化方式が異なる

SSHプロトコル サポート暗号化方式
SSH1 RSA
SSH2 RSA, DSA

暗号鍵の記述形式

OpenSSH形式

-----BEGIN RSA PRIVATE KEY-----

SECSH(ssh.com)形式

---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----

PuTTy形式

PuTTY-User-Key-File-2: ssh-rsa

参考

◯ puttygenで作成した鍵がGitHubSSHで利用できない時の対応
http://qiita.com/pink/items/ada9fa6236594f8fc5e9

大変参考にさせていただきました.


◯ [bash]puttyで作成した公開鍵をopenssh(GitHubなど)キーへ変換する方法
http://to-developer.com/blog/?p=1143

キーの変換はこちらを参考にさせていただきました.