パスフレーズを要求するSSHキー


35

公開キーと秘密キーのペアがあります。どちらにもパスフレーズは関連付けられていません。

プライベートまたはパブリックのいずれかを使用してsshを実行しようとするたびに(そして、パブリックキーのみを使用する必要があると確信しています)、パスフレーズを照会された後、もちろん接続できません。

誰もこれを回避する方法を知っていますか?間違ってコマンドを入力していますか?〜/ .ssh / configファイルにセットアップしたサーバーにsshしようとしています(正確に、このまったく同じセットアップが別のサーバーで機能するため)〜/ .ec2 / key.ppkにキーを保存します

また、puttygen.exeを使用してパスフレーズ付きの新しい秘密キーを生成し、そのキーを使用してみましたが、パスフレーズを入力しても失敗します。

回答:


28

最初に、パスフレーズを持つのは秘密鍵です。これは、リモートサーバーに格納されている公開キーに対して検証します。

最良の推測は、ppkopensshでパテ秘密鍵()キー形式を使用しようとしていることです。これは機能しません。PuTTYgenには、opensshのエクスポートオプションがあります。

ssh-rsa AAAAB3NzaC1y...... etc

また、sshしようとしているサーバーの公開キーが、承認されたキーファイル(~/.ssh/authorized_keys通常)に正しく保存されていると想定しています。

別の推測は、正しいキーが選択されていないことです。私が試してみたいことは次のとおりです。

次のように、キーパスフレーズをリセットしますssh-keygen...

$ ssh-keygen -f ~/.ec2/key.ppk -p

これにより、実際にキーにパスフレーズが既にあるかどうかが確認されます。

次に、公開キーを明示的に指定して、詳細な出力を使用して接続してみます。

$ ssh host -i ~/.ec2/key.ppk -vvv

これにより、何が起こっているのかがわかります。


正しい、これはputtygenによって、パテで機能するキーから生成されたキーです。(cygwinインスタンスをホストするマシンから)同じサーバーにputtyを入れると、まったく同じキーで正常に動作します。cygwinからssh経由で接続しようとすると、爆発します。私はこの仕事をする方法を混同しています。
ラスキン

6
mrverrallのポイントは、PuTTY秘密鍵のファイル形式がOpenSSH(cygwinのsshクライアント)に使用されるファイル形式と同じではないことだと思います。そのため、OpenSSHはデータの意味を理解できないため、秘密鍵データの使用に失敗しています。ただし、PuTTYには「エクスポート」オプションがあるため、必要な「PEM」形式でデータを取得できます。
フィルP

このエラーは、ファイルが正しい形式の場合にも表示されます。したがって、手動で作成する場合は、コピーおよび貼り付けが適切に行われていることを二重および三重に確認してください。
ダニエルソコロウスキ

あるssh-rsa AAAAB3NzaC1y...... etcのopensshのフォーマットは、右か?私の秘密鍵にはこの形式があります。ヘッダーの状態:PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6ただし、ファイルはid_rsaファイルとして保存されます。これは、ファイルの名前がid_rsa
-alpha_989

ここでさまざまな形式の答えを見つけました。私の場合、ファイルの拡張子はあり.ppkませんでしたが、それはまだパテ形式であり、すべての種類のエラーを示していたので混乱しましたが、問題はキーの形式に関するものであるという直接的なヒントは与えませんでした:stackoverflow.com/a/44391850/4752883
alpha_989

18

ssh-agentを実行できます。議論のためにここを見てください。

私のために働いた短いバージョン(bashで):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

エコーアウトした3行を取り出して実行しました。それを行う別の方法は、-sの出力を取得することです。

$ eval `ssh-agent -s`

次に、資格情報を追加しました:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

これで、エージェントがパスフレーズを入力する代わりに資格情報を提供します。

シェルが削除されるとssh-agentが削除されると思うので、起動時にスクリプトを作成して最大限の利便性を確保する必要があります。私は共有リンクは、同様のスクリプトを記述しています。


4

公開鍵を設定するとき、おそらく(おそらく不注意で)パスフレーズを使用して設定します。

おそらく新たに開始する必要があります-puttygenを使用したことはありませんが、.sshディレクトリ内の公開キーを削除(または名前変更)しssh-keygen、新しいキーを生成するために使用できます(パスフレーズを提供しないようにしてください)接続しようとしているサーバー上のauthorized_keysファイルとpublic_keyを共有します。

接続しているサーバーの認証済みキーファイルから古いパスフレーズキーを削除する必要がある場合もあります。


4

秘密鍵id_rsaの最後に余分な改行がないことを確認してください。場合によっては、余分な改行によりssh-keygenがパスフレーズを要求します。これを試してください:

sed  '/^$/d' /path/to/key > id_rsa

テスト:

ssh-keygen -yf id_rsa

2
OMGこれは私の問題でした。後に追加の改行-----END RSA PRIVATE KEY-----があり、1つのセットを持たないキーのパスフレーズを要求していました!
edk750

3

確認する必要があるのは、sshd_configファイルにStrictModes = yesがある場合、$ HOMEディレクトリーまたは$ HOME / .sshディレクトリーは、グループまたは他のユーザーが書き込み可能ではならないことです。そうでない場合、認証は何があっても失敗します。


1

〜/ .ssh / id_rsaファイルを誤って〜/ .ssh / id_rsa.pubで上書きするというミスを犯しました。これを行うと、sshはパスフレーズを要求します。


0

先日、この問題に遭遇しました。具体的には、あるマシンから別のマシンにプライベートAWSキーをコピー/貼り付けしようとしていました。

私は最初または最後の文字が欠けているという悪い癖があります。キーテキスト自体とは関係ありませんが、プライベートキーの最後にあるすべてのハイフンを取得しないと、すべての文字をコピー元のキー(私の場合、これはキーの最後に単一のハイフンを追加することを意味しました。)

これは、ターミナルウィンドウ間でコピーアンドペーストを試みるのではなく、ワイヤーを介してテキストファイルをSSHすることがベストプラクティスであることを意味すると思います。


0

OSXでは、次を実行することができました。

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

パスワードは、アプリケーション>ユーティリティフォルダーにあるキーチェーンアクセスアプリケーションによって保存されました。id_検索フィールドに入力しました。


0

サーバー上のログファイルを表示してみてください。/ var / log / auth log(たとえば、OpenSSHの/ var / log / authlogを参照してください。ただし、一部のオペレーティングシステムではPortable OpenSSHを使用し、/ var / log / auth.logを使用しています)を確認し、そのファイルの終わりを確認します。

私が見た最も一般的な原因は不正なアクセス許可です(TD1の回答に記載されています)。ユーザー名のつづりが間違っています。

また、アカウントに一時的にパスフレーズを付けると(トラブルシューティングの場合)、そのときにアカウントが正常にログインできることを確認するだけでも役立ちます。

ログファイルを表示してもすぐに解決しない場合は、ログファイルの特定の詳細を含む新しい質問を投稿することをお勧めします(これは非常に一般化された質問であるため)。


0

私のチームでは、これが発生しても、ローカルでの問題はありません。ユーザーのsshキーやアクセスが、接続先のサーバー(この場合はホスティングプラットフォーム)で正しく構成されていません。何らかの理由で、これにより存在しないsshキーのプロンプトがトリガーされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.