Mac
Windows
Linux
SSH
Putty

RSA鍵のフォーマットを作って見て変換して体験実習しみた

More than 1 year has passed since last update.

環境


  • 鍵作りに使ったもの


    • ssh-keygen : Macにあるもの

    • Puttygen : Release 0.70

    • TeraTerm : Version 4.96



  • クライアント側のOS


    • macOS Soerra Version 10.12.6

    • Windows10 Pro 64bit



  • サーバ側のOS : CentOS7


    • Macの中のVirtualBoxにいます




鍵を作る方法


鍵のフォーマット


PEM形式


  • 特徴1. -----BEGIN xxxxxxxxxxxx -----って書いてある

  • 特徴2. 拡張子が.pemってなってることがある


  • :loudspeaker:鍵の末尾に「=」がつくことがある


    • Base64でエンコードしているので変換で余った部分に「=」が使われる

    • Base64 - Wikipedia



  • この形式を必要とするもの


    • SECSH形式の公開鍵と秘密鍵

    • OpenSSH形式の公開鍵




.DERと同じASN.1のバイナリデータをBase64によってテキスト化されたファイルです。

ファイルの先頭に -- BEGIN... という行があるのをみたら「PEMだな」と思えば良いです。

opensslコマンドのデフォルトのエンコーディングなので、たとえば何も指定せずに鍵を生成すると PEM形式のファイルが作られます。

RSA鍵、証明書のファイルフォーマットについて - Qiita



SECSH形式(ssh.com)


  • 特徴1. 公開鍵は、---- BEGIN SSH2 PUBLIC KEY ----って書いてある


    • Puttygenにおいて特に設定無しで出力すると拡張子は.pubになる



  • 特徴2. 秘密鍵は、---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----って書いてある


Puttygen製公開鍵

---- BEGIN SSH2 PUBLIC KEY ----

Comment: "{コメント}"
AAAA{最初の行}
{改行あり文字列}
---- END SSH2 PUBLIC KEY ----


OpenSSH形式


  • 特徴1. 公開鍵は、ssh-rsaで始まって全体が1行になっている


    • TeraTermにおいて特に設定無しで出力すると拡張子は.pubになる



  • 特徴2. 秘密鍵は、-----BEGIN RSA PRIVATE KEY-----って書いてある

  • この形式を必要とするもの


    • Tera Term




ssh-keygen製公開鍵

ssh-rsa AAAA{改行なし文字列} {ユーザ名}@{PC名}



TeraTerm製公開鍵

ssh-rsa AAAA{改行なし文字列} {ユーザ名}@{PC名}



Puttygen製の鍵をssh-keygenで変換した公開鍵

ssh-rsa AAAA{改行なし文字列}



ssh-keygen製秘密鍵

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

Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,8B5E34DBBBC0801DDDC2A5A241775435

{改行あり文字列}
-----END RSA PRIVATE KEY-----



TeraTerm製秘密鍵

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

Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,7C930B26ED8CEE374948185658236DAC

{改行あり文字列}
-----END RSA PRIVATE KEY-----



Puttygen製の鍵をPuttygenでOpenSSH形式に変換した秘密鍵

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

Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F3C7A665262E1B0D

{改行あり文字列}
-----END RSA PRIVATE KEY-----



Putty形式


  • 特徴1. 秘密鍵の拡張子は、.ppk

  • 特徴2. :loudspeaker:この形式の公開鍵はない

  • 特徴3. 秘密鍵は、PuTTY-User-Key-File-2: ssh-rsaって書いてある

  • この形式を必要とするもの


    • Putty

    • WinSCP




Puttygen製秘密鍵

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

Encryption: aes256-cbc
Comment: {コメント}
Public-Lines: 6
AAAA{最初の行}
{改行あり文字列}
Private-Lines: 14
{改行あり文字列}
Private-MAC: 811871db936602fd5c01593aa7273dcc79eab6e2


鍵のフォーマットを説明しているサイト集


鍵のフォーマットを変換する方法


ssh-keygenを利用する

Putty形式/SECS形式 > OpenSSH形式

$ ssh-keygen -i -f {公開鍵}.pub > authorized_keys

OpenSSH形式 > SECS形式
$ ssh-keygen -f {公開鍵} -e -m pem