しばらく前に、AWSにサーバーをセットアップし、生成されたSSHキーを使用しました。私はキーをLastpassに保存し、以前そこから正常に取得して、それを機能させました。しかし、今日それを再試行した後、私はそれを動作させることができません。
-rw------- 1 itsgreg users 1674 Jun 6 12:51 key_name
私はもう試した ssh -i key_name
、ssh-keygen -f key_name
、しかし何も機能しません。私は常にこのエラーメッセージを受け取ります。
Load key "key_name": invalid format
これを修正する方法はありますか?
key_name
の内容を確認し、エージェントがinvalid format
と言った場合は、キーに問題があります-..のようなものです。必要な秘密鍵ではない場合でも、sshエージェントはinvalid format
を返しません。鍵が機能している場合は、接続できません。何らかの理由で公開鍵をそこに置いた可能性があります。確認してください!
この問題を解決するために私がしたことは、PuttyGen
を使用してPPKファイルを変換するために使用することです。
最初にurkey.PPK
、次に変換メニューで、[Opensshファイル形式にエクスポート]をクリックします。それはnewkeyファイルを作成します。
今、ssh -i "newkey" [email protected]
できました。それが役に立てば幸い。
同じ問題がありましたが、何らかの理由でファイルにWindowsスタイル(CRLF)の行区切り文字が含まれていることがわかりました。
さらに、ファイルは単一のLFで終わる必要があります。
それらを修正すると、物事は再び厄介になった。
Opensshに.ssh/configファイルで指定して特定のIDファイルを使用するように依頼していました。
元の作業構成には
IdentityFile = <path to public key file>
これは変更なしで動作を停止しました。少し考えて、上記の「公開鍵ファイルへのパス」を「秘密鍵ファイルへのパス」に置き換えました。うまくいきました。その理由は、公開鍵ファイルと秘密鍵ファイルの両方に、RSAアルゴリズムに従って大きなpeudoprimeに関連する番号があることです。秘密鍵ファイルを公開鍵ファイルに置き換えると、これらの暗号番号は、鍵ファイル内に保存されたbase64ブロックから正しく抽出されません。 sshの一部のバージョンは.pub拡張子を理解し、それを使用して正しい秘密鍵ファイルを識別することができるようです-他のバージョンはそれを行いません。これは、このエラーが発生する別の方法です。それが誰かを助けることを願っています。
.ppkキーをOpenSSHキーに変換する必要があります
これがあなたのやり方です:
私の場合、開始/終了の「ヘッダー」と主要なデータの間に改行があることがわかりました。
-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----
余分な新しい行を削除して、
-----BEGIN RSA PRIVATE KEY-----
- Key data here -
-----END RSA PRIVATE KEY-----
私の問題を解決しました。
今日、CIパイプライン用のgit tagging utilsを書いているときに、この問題に遭遇しました。
これが私の2つのキーの違いです。
$ diff ~/.ssh/gitlab ~/.ssh/git_ssh_key
27c27
< -----END OPENSSH PRIVATE KEY-----
---
> -----END OPENSSH PRIVATE KEY-----
\ No newline at end of file
私は私のようにコードを変更しました:
with open(ssh_key_file, 'w') as skf:
- skf.write(ssh_key)
+ skf.write(ssh_key + '\n')
そして今私のsshキーは動作します。
TL; DR-秘密鍵の最後に改行が必要だと思います。
公開鍵の代わりに秘密鍵を使用します。
私の問題はエンコーディングによるものでした。 VSCodeを見ると、ファイルのエンコード(PowerShellでOut-File
を使用して作成したもの)はUTF-16LE
でした。 UTF-8
に切り替えたところ、キーは有効でした。
〜/ .sshに実際には無効な形式のキーがあり、多くのキーがあったため、コマンドでIDファイルを指定したにもかかわらず、SSHがそれらすべてを試行していたため、この問題が発生しました。私が思うに5つのキーしか試すことができないため、たまたま失敗するだけです。それから、間違ったIDファイルに対して、正当であるそのエラーを私に残しました。解決策はIdentitiesOnly yes
〜/ .ssh/configにあります。
キーファイルの先頭に空白行があったため、このエラーが発生しました。あなたがそれをcat
ingしているなら見逃しがちです。
これは、秘密鍵にパスフレーズがあり、接続しようとしたときにパスフレーズを誤って入力した場合にssh(少なくとも一部のバージョン)が発行するエラーでもあります。
(特に、これは、OpenSSH_7.6p1、LibreSSL 2.6.2、Mac OS X 10.13.6の組み込みSSHで発生しました。)
したがって、正しいパスフレーズを使用していることと、CAPS LOCKがオフになっていることを再確認してください。