web-dev-qa-db-ja.com

key_load_public:無効なフォーマット

PuTTY Key Generatorを使用して、パスフレーズ付きの4096ビットRSA-2鍵を生成しました。

.ppkとopenSSL形式の公開鍵を保存します。 PuTTY形式の公開鍵は機能しません。

いずれにせよ、私のエラーは次のとおりです。

$ ssh -T [email protected]
key_load_public: invalid format
Enter passphrase for key '/c/Users/Dan/.ssh/id_rsa':
Hi Dan! You've successfully authenticated, but GitHub does not provide Shell access.

問題は何ですか?

私はキーをロードするためにPageantを使い、ssh接続を試すためにGit Bashを使います。私はまた、GitHubにキーをロードしました。

GitHubで新しい行を追加し、新しい行を追加しないようにしました

55
JordanGS

Roland が彼らの答えで述べたように、それはssh-agentが公開鍵のフォーマットを理解しないそしてそれでもそれでも公開鍵がローカルに使用されないであろうという警告です。

ただし、警告が表示される理由を詳しく説明して回答することもできます。それは単にPuTTY Key Generator 2つの異なる公開鍵フォーマット をあなたがプログラムで何をするかに依存して生成するという事実に帰着します。

注: 私の説明では、私が使用する/生成するキーファイルは、適切な拡張子を付けてid_rsaという名前にします。さらに、コピー&ペーストの便宜上、キーの親フォルダは~/.ssh/と見なされます。必要に応じてこれらの詳細を調整してください。

フォーマット

関連するPuTTYドキュメントへのリンク

SSH-2

[Save public key]ボタンを使用してPuTTY Key Generatorを使用して save keyを使用すると、 RFC 4716で定義された形式で保存されます。 .

例:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "github-example-key"
AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYF
i2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcp
pY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3
oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEA
ip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9
tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw==
---- END SSH2 PUBLIC KEY ----

OpenSSH

一般的な考えに反して、この形式はジェネレータによって保存されません。ただし、それは生成され、「OpenSSHのauthorized_keysファイルに貼り付けるための公開鍵」というタイトルのテキストボックスに表示されます。ファイルとして保存するには、テキストボックスから手動でコピーして新しいテキストファイルに貼り付ける必要があります。

上記のキーの場合、これは次のようになります。

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5EwgnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8DGm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElw== github-example-key

鍵のフォーマットは単にssh-rsa <signature> <comment>であり、SSH-2フォーマットのファイルを並べ替えることで作成できます。

公開鍵の再生成

ssh-agentを使用している場合は、おそらくssh-keygenにもアクセスできるでしょう。

OpenSSH秘密鍵(id_rsaファイル)がある場合は、次のコマンドを使ってOpenSSH公開鍵ファイルを生成できます。

ssh-keygen -f ~/.ssh/id_rsa -y > ~/.ssh/id_rsa.pub

PuTTY秘密鍵(id_rsa.ppkファイル)しかない場合は、まずそれを変換する必要があります。

  1. PuTTY鍵ジェネレータを開く
  2. メニューバーで[ファイル]> [秘密キーの読み込み]の順にクリックします。
  3. id_rsa.ppkファイルを選択してください
  4. メニューバーで、[変換]> [OpenSSHキーのエクスポート]の順にクリックします。
  5. ファイルをid_rsaとして保存します(拡張子なし)。

OpenSSHの秘密鍵が手に入りましたので、上記のようにssh-keygenツールを使ってその鍵を操作することができます。

ボーナス:PKCS#1 PEMエンコード公開鍵フォーマット

正直なところ、私はそれが必要ではなかったので、私はこの鍵が何のために使われるのか知りません。しかし、私は長年かけて私が照合した私のノートにそれを持っています、そして私はここに健康的な良さのためにそれを含めます。ファイルは次のようになります。

-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAhl/CNy9wI1GVdiHAJQV0CkHnMEqW7+Si9WYFi2fSBrsGcmqeb5Ew
gnhmTcPgtM5ptGBjUZR84nxjZ8SPmnLDiDyHDPIsmwLBHxcppY0fhRSGtWL5fT8D
Gm9EfXaO1QN8c31VU/IkD8niWA6NmHNE1qEqpph3DznVzIm3oMrongEjGw7sDP48
ZTZp2saYVAKEEuGC1YYcQ1g20yESzo7aP70ZeHmQqI9nTyEAip3mL20+qHNsHfW8
hJAchaUN8CwNQABJaOozYijiIUgdbtSTMRDYPi7fjhgB3bA9tBjh7cOyuU/c4M4D
6o2mAVYdLAWMBkSoLG8Oel6TCcfpO/nElwIBJQ==
-----END RSA PUBLIC KEY-----

このファイルは、OpenSSH秘密鍵(上記の「公開鍵の再生成」で生成されたもの)を使用して生成できます。

ssh-keygen -f ~/.ssh/id_rsa -y -e -m pem > ~/.ssh/id_rsa.pem

別の方法として、OpenSSH公開鍵を使用することができます。

ssh-keygen -f ~/.ssh/id_rsa.pub -e -m pem > ~/.ssh/id_rsa.pem

参考文献:

105
samthecodingman

sshはあなたの公開鍵を読むことができないようです。しかし、それは問題ではありません。

あなたは公開鍵をgithubにアップロードしますが、あなたはあなたの秘密鍵を使って認証します。例えば参照。 ssh(1)のFILESセクション.

5
Roland Smith

公開鍵をクリップボードでコピーして貼り付けた場合、改行を含む公開鍵文字列が壊れる可能性があります。

公開鍵の文字列が1行になっていることを確認してください。

3
Hojin Choi

秘密鍵を直接保存する代わりに、「変換とエクスポートSSh鍵」に進みます。同じ問題を抱えていて、これは私のために働いた

1
Jignesh Rawal

私は同じ警告を受けました。とても古い鍵でした。現在のOpenSSH 7でキーを再生成したところ、エラーが消えました。

0
arberg