私は2つの秘密sshキーを持っています-1つはssh-keygenで最初に作成され、もう1つはpythonスクリプトで作成されました。それらは同じであると想定されていますが、1つは認証で機能し、もう1つは認証で機能します。しません。
https://keytool.online/ でそれらを分析した後、OpenSSH形式でそれらを比較すると、1つの小さな違いがあるようです。
説明:
1)ECDSAタブの https://keytool.online/ に両方のキーをコピーします:
キー1(ssh-keygenで作成)
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIBaYCj/CjZjq9aYehcvyejxqx5WVJ3OnfNbBq2+7iKyJoAoGCCqGSM49
AwEHoUQDQgAE1Rcx8Zo84aqSWqT/7i5NN7p+PI6dRfGdFFJapfcBlMhMjFsJkrxh
vncLphHuZHBoEILRMKf7hfVJ+tMwHMxQMA==
-----END EC PRIVATE KEY-----
キー2(Pythonで作成)
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFpgKP8KNmOr1ph6F
y/J6PGrHlZUnc6d81sGrb7uIrImhRANCAATVFzHxmjzhqpJapP/uLk03un48jp1F
8Z0UUlql9wGUyEyMWwmSvGG+dwumEe5kcGgQgtEwp/uF9Un60zAczFAw
-----END PRIVATE KEY-----
2)OpenSSH形式で表示します:
キー1(ssh-keygenでOpenSSH形式で作成)
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNl
Y2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTVFzHxmjzhqpJapP/u
Lk03un48jp1F8Z0UUlql9wGUyEyMWwmSvGG+dwumEe5kcGgQgtEwp/uF9Un60zAc
zFAwAAAAsGt4wBFreMARAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy
NTYAAABBBNUXMfGaPOGqklqk/+4uTTe6fjyOnUXxnRRSWqX3AZTITIxbCZK8Yb53
C6YR7mRwaBCC0TCn+4X1SfrTMBzMUDAAAAAgFpgKP8KNmOr1ph6Fy/J6PGrHlZUn
c6d81sGrb7uIrIkAAAASZWNkc2Eta2V5LTIwMTkwOTIwAQIDBAUG
-----END OPENSSH PRIVATE KEY-----
キー2(OpenSSH形式でPythonで作成)
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNl
Y2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTVFzHxmjzhqpJapP/u
Lk03un48jp1F8Z0UUlql9wGUyEyMWwmSvGG+dwumEe5kcGgQgtEwp/uF9Un60zAc
zFAwAAAAsFhPTMdYT0zHAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy
NTYAAABBBNUXMfGaPOGqklqk/+4uTTe6fjyOnUXxnRRSWqX3AZTITIxbCZK8Yb53
C6YR7mRwaBCC0TCn+4X1SfrTMBzMUDAAAAAgFpgKP8KNmOr1ph6Fy/J6PGrHlZUn
c6d81sGrb7uIrIkAAAASZWNkc2Eta2V5LTIwMTkwOTIwAQIDBAUG
-----END OPENSSH PRIVATE KEY-----
3)任意のテキスト差分表示ツールを使用します。いくつかの文字が異なることに気づくでしょう。彼らは何を表していますか?両方のキーの違いは何ですか?すべてのドメインパラメータは同一のようです
(キーは重要なものには使用されず、この問題を示すために作成されただけです)
OpenSSHキーのエンコードはbase64にすぎないため、パスフレーズがなくなったら、コンテンツを分析できます。
最初の1つ:
$ base64 -d | hexdump -C
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNl
Y2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTVFzHxmjzhqpJapP/u
Lk03un48jp1F8Z0UUlql9wGUyEyMWwmSvGG+dwumEe5kcGgQgtEwp/uF9Un60zAc
zFAwAAAAsGt4wBFreMARAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy
NTYAAABBBNUXMfGaPOGqklqk/+4uTTe6fjyOnUXxnRRSWqX3AZTITIxbCZK8Yb53
C6YR7mRwaBCC0TCn+4X1SfrTMBzMUDAAAAAgFpgKP8KNmOr1ph6Fy/J6PGrHlZUn
c6d81sGrb7uIrIkAAAASZWNkc2Eta2V5LTIwMTkwOTIwAQIDBAUG
00000000 6f 70 65 6e 73 73 68 2d 6b 65 79 2d 76 31 00 00 |openssh-key-v1..|
00000010 00 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 |...none....none.|
00000020 00 00 00 00 00 00 01 00 00 00 68 00 00 00 13 65 |..........h....e|
00000030 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 |cdsa-sha2-nistp2|
00000040 35 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 |56....nistp256..|
00000050 00 41 04 d5 17 31 f1 9a 3c e1 aa 92 5a a4 ff ee |.A...1..<...Z...|
00000060 2e 4d 37 ba 7e 3c 8e 9d 45 f1 9d 14 52 5a a5 f7 |.M7.~<..E...RZ..|
00000070 01 94 c8 4c 8c 5b 09 92 bc 61 be 77 0b a6 11 ee |...L.[...a.w....|
00000080 64 70 68 10 82 d1 30 a7 fb 85 f5 49 fa d3 30 1c |dph...0....I..0.|
00000090 cc 50 30 00 00 00 b0 6b 78 c0 11 6b 78 c0 11 00 |.P0....kx..kx...|
000000a0 00 00 13 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 |...ecdsa-sha2-ni|
000000b0 73 74 70 32 35 36 00 00 00 08 6e 69 73 74 70 32 |stp256....nistp2|
000000c0 35 36 00 00 00 41 04 d5 17 31 f1 9a 3c e1 aa 92 |56...A...1..<...|
000000d0 5a a4 ff ee 2e 4d 37 ba 7e 3c 8e 9d 45 f1 9d 14 |Z....M7.~<..E...|
000000e0 52 5a a5 f7 01 94 c8 4c 8c 5b 09 92 bc 61 be 77 |RZ.....L.[...a.w|
000000f0 0b a6 11 ee 64 70 68 10 82 d1 30 a7 fb 85 f5 49 |....dph...0....I|
00000100 fa d3 30 1c cc 50 30 00 00 00 20 16 98 0a 3f c2 |..0..P0... ...?.|
00000110 8d 98 ea f5 a6 1e 85 cb f2 7a 3c 6a c7 95 95 27 |.........z<j...'|
00000120 73 a7 7c d6 c1 ab 6f bb 88 ac 89 00 00 00 12 65 |s.|...o........e|
00000130 63 64 73 61 2d 6b 65 79 2d 32 30 31 39 30 39 32 |cdsa-key-2019092|
00000140 30 01 02 03 04 05 06 |0......|
2番目のもの:
$ base64 -d | hexdump -C
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNl
Y2RzYS1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQTVFzHxmjzhqpJapP/u
Lk03un48jp1F8Z0UUlql9wGUyEyMWwmSvGG+dwumEe5kcGgQgtEwp/uF9Un60zAc
zFAwAAAAsFhPTMdYT0zHAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy
NTYAAABBBNUXMfGaPOGqklqk/+4uTTe6fjyOnUXxnRRSWqX3AZTITIxbCZK8Yb53
C6YR7mRwaBCC0TCn+4X1SfrTMBzMUDAAAAAgFpgKP8KNmOr1ph6Fy/J6PGrHlZUn
c6d81sGrb7uIrIkAAAASZWNkc2Eta2V5LTIwMTkwOTIwAQIDBAUG
00000000 6f 70 65 6e 73 73 68 2d 6b 65 79 2d 76 31 00 00 |openssh-key-v1..|
00000010 00 00 04 6e 6f 6e 65 00 00 00 04 6e 6f 6e 65 00 |...none....none.|
00000020 00 00 00 00 00 00 01 00 00 00 68 00 00 00 13 65 |..........h....e|
00000030 63 64 73 61 2d 73 68 61 32 2d 6e 69 73 74 70 32 |cdsa-sha2-nistp2|
00000040 35 36 00 00 00 08 6e 69 73 74 70 32 35 36 00 00 |56....nistp256..|
00000050 00 41 04 d5 17 31 f1 9a 3c e1 aa 92 5a a4 ff ee |.A...1..<...Z...|
00000060 2e 4d 37 ba 7e 3c 8e 9d 45 f1 9d 14 52 5a a5 f7 |.M7.~<..E...RZ..|
00000070 01 94 c8 4c 8c 5b 09 92 bc 61 be 77 0b a6 11 ee |...L.[...a.w....|
00000080 64 70 68 10 82 d1 30 a7 fb 85 f5 49 fa d3 30 1c |dph...0....I..0.|
00000090 cc 50 30 00 00 00 b0 58 4f 4c c7 58 4f 4c c7 00 |.P0....XOL.XOL..|
000000a0 00 00 13 65 63 64 73 61 2d 73 68 61 32 2d 6e 69 |...ecdsa-sha2-ni|
000000b0 73 74 70 32 35 36 00 00 00 08 6e 69 73 74 70 32 |stp256....nistp2|
000000c0 35 36 00 00 00 41 04 d5 17 31 f1 9a 3c e1 aa 92 |56...A...1..<...|
000000d0 5a a4 ff ee 2e 4d 37 ba 7e 3c 8e 9d 45 f1 9d 14 |Z....M7.~<..E...|
000000e0 52 5a a5 f7 01 94 c8 4c 8c 5b 09 92 bc 61 be 77 |RZ.....L.[...a.w|
000000f0 0b a6 11 ee 64 70 68 10 82 d1 30 a7 fb 85 f5 49 |....dph...0....I|
00000100 fa d3 30 1c cc 50 30 00 00 00 20 16 98 0a 3f c2 |..0..P0... ...?.|
00000110 8d 98 ea f5 a6 1e 85 cb f2 7a 3c 6a c7 95 95 27 |.........z<j...'|
00000120 73 a7 7c d6 c1 ab 6f bb 88 ac 89 00 00 00 12 65 |s.|...o........e|
00000130 63 64 73 61 2d 6b 65 79 2d 32 30 31 39 30 39 32 |cdsa-key-2019092|
00000140 30 01 02 03 04 05 06 |0......|
00000147
キーの形式は OpenSSHリポジトリ で説明されています。
ここでの違いは、1つのキーに次のバイトがあることです6b 78 c0 11 6b 78 c0 11
と他の58 4f 4c c7 58 4f 4c c7
。これらのバイトは、同じであり、解読されたキーが本当に有効であることの検証に使用される2つのランダムな32B整数を表します(使用されている暗号化がある場合)。リンクされたドキュメントのcheckint
フィールドを参照してください。
両方のキーは、仕様(OpenSSHキー形式)に従って有効です。
PEM形式の違いについては、dave_thompson_085の回答を参照してください。 TLDR、それらの1つはレガシーPEMであり、もう1つは同じキーを含む最新のPKCS#8形式であり、どちらもOpenSSHによって認識されます。