SSH秘密キーのアクセス許可が0600に設定されている場合、パスワードダイアログが表示されます


71

SSH秘密鍵をインストールし、~/.ssh/id_rsaその許可をに設定しました0600。Terminal.appで秘密鍵を使用するSSHサーバーにを介して接続するsshと、ダイアログがポップアップ表示され、id_rsaファイルにアクセスするためのパスワードを入力するよう求められます。

ここに画像の説明を入力してください

Interarchy GUIクライアントを使用してFTPサーバーに接続すると、同じダイアログが表示されます。

更新:「キーチェーンのパスワードを記憶する」をチェックするかどうかに関係なく、接続するたびにこのダイアログが表示されます。パスワードフィールドに入力した内容に関係なく、[OK]ボタンをクリックすると、さらに2回表示されます。

たとえば、これらの権限を緩和する0640と、パスワードの入力を求めるダイアログは表示されなくなりますがssh、次のエラーで中止されます。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@警告:保護されていないプライベートキーファイル!@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
'/Users/myusername/.ssh/id_rsa'のアクセス許可0640が開きすぎています。
秘密鍵ファイルには他の人がアクセスできないようにすることをお勧めします。
この秘密鍵は無視されます。
不正なアクセス許可:キーを無視:/Users/myusername/.ssh/id_rsa

パスワードダイアログは非常に迷惑であり、SSHがid_rsaファイルにアクセスするために必要なこのダイアログを閉じる必要がないようにする方法が必要だと確信しています。

注:Mac OS X 10.6.8を実行しています。

回答:


70

対応するディレクトリがあるid_rsa.pubid_dsa.pub~/.sshディレクトリにあることを確認してください。

id_rsa対応していなかったときにid_rsa.pub、Mac OS Xがダイアログをポップアップ表示し続け、キーチェーンのpassowrdが何もしなかったことを覚えています。

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

適切な公開鍵ファイルを生成してくれました。

すでに公開ファイルがあり(別の名前に変更)、上記のコマンドを使用して公開キーを再度生成すると、生成されたものと古いものが等しくないことに気付くでしょう。どういうわけか、Mac OS Xの古いバージョンは、Lionがもう気に入らない公開キーを生成しました。

不思議なことに、キーはまったく同じです。変更された部分は、ファイルのキーの後に「コメント」セクションがないことです。


2
このソリューションは一見あまり意味をなさないかもしれませんが、試してみてください。私はまったく同じ問題を抱えていましたが、それを修正しました。私はいつも sshキーにパスワードを使用していますが、あなたもそうすべきです。
アレックスRecarey

3
このソリューションは私のために働いた。意味はありませんが、機能します!(OS Xライオン)
bruno077

2
うわー、それはまったく意味をなしませんが、それは確かに私のシステム上の多くの奇妙な動作を修正しました。ありがとう。
ウォーレンペナ

2
私の人生では、同じ問題で何日も解決策を見つけられなかったので、これで解決しました。これはまったく意味がありませんが、私の問題は修正されました!感謝します。
ダニーイングランド人

OMGありがとう!私のために働いた(山のライオンとSourceTreeを使用)それらのダイアログはとても面倒でした。
セバスチャン・サストレ

91

まず、実行してssh-add -K、これで問題が解決するかどうかを確認します。

そうでない場合:

  • rsa_id.pubファイルを削除し、新しいファイルを再生成しました(〜/ .ssh /にある必要があります):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • id_rsaとid_rsa.pubの両方のアクセス許可が600に設定されていることを確認しました(〜/ .ssh /にある必要があります)。

    chmod 600 id_rsa*
  • 次のコマンドを実行しました。

    ssh-add -K

これを行った後、秘密鍵のパスワードを入力するよう求められなくなりました。これにより、OS Xが使用する正しいキーチェーンの場所に秘密鍵のパスワードが実際に配置されるようです。


7
私があなたの「ssh-add -K」コマンドに出くわすまで、GOING INSANEでした。OSXがどれほど複雑になったとは思わない。+1000
eduncan911 14

4
ちなみに、私はchmod 600(644の代わりに)それが機能する必要がありました
-kangax

1
644の秘密キーはブエノではありません
-xtian

15
ssh-add -K私の問題を解決した
-Spechal

2
chmod 644がchmod 600に修正されるまで、投票しないでください。これは安全ではありません。
トマーシュカフカ

20

私の場合ssh-add -K、トリックを行わなかったため、キーを指定する必要がありました。

ssh-add ~/.ssh/id_rsa

何もありません-Kオプションはもう。ソリューションで修正しました。なぜこれを行う必要があるのだろうか。パスワードプロンプトが表示されたことはありません。
-DannyRe

ありがとう!これが、OS X Sierraが最終的にid_rsaパスワードを要求したときです。
トマーシュカフカ

2
FWIW、-K旗はシエラ10.12.2で私のために働いた
クリスワーグナー

うん。確認できます。-Kは存在し、最新のSierraの問題を修正します!@nathancahillお疲れ様でした。
マットKomarnicki

17

macOS 10.12の場合ssh-add -K、リブートのたびにSierra を実行する必要があります。これを回避するには~/.ssh/config、このコンテンツで作成します。

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Appleは何が起こったかを説明するTechnote 2449を追加しました。

macOS Sierraより前は、sshはパスフレーズを尋ねるダイアログを表示し、キーチェーンに保存するオプションを提供していました。このUIはしばらく前に廃止され、削除されました。

編集:明らかにホストとキーを指定する必要はありません。これを追加するだけで十分です。

AddKeysToAgent yes
UseKeychain yes

これは私のために働いたものです。最初はssh-add -Kを試しましたが、変更は再起動するまで機能しませんでした。
Gandalf458

AddKeysToAgentの最上位に置く必要がありました~/.ssh/config
ラドンロズバラ

12

秘密鍵のパスフレーズをどこかに入力する必要があり、OS Xはデフォルトでssh-agentを使用します。

ssh-agentを使用するが、GUIダイアログボックスを使用しない場合は、ssh-addを使用してパスフレーズをエージェントに追加し、通常どおりにsshを実行できます。

ssh-agentを使用せず、代わりにパスフレーズのsshプロンプトを表示する場合は、SSH_AUTH_SOCK環境変数を設定解除します。


ありがとう、Alrescha。秘密鍵のパスワードをMac OS Xキーチェーンに永続的に保存する方法があるかどうかを知っていますか(単一のセッションだけでなく)。
titaniumdecoy

3
ターミナルで「ssh-add -K」を試すことができますが、チェックボックスが機能しないバグがある場合、これも機能しない可能性があります。sshパスフレーズをキーチェーンに保存したくないので、これをテストしていません。
zzz

ssh-add -K私は接続するためのパスワードを入力する必要はありませんが、プロンプトがまだ表示されます ただ却下します。
titaniumdecoy

3
ssh-add -Kは、キーチェーンにパスワードを追加するために使用するものです。パスワードを入力しないと、キーチェーンに追加できません。
zzz

1
補遺:LionとSnow Leopardの両方で、ssh-add -Kと入力すると、ダイアログボックスではなく、ターミナルにプロンプ​​トが表示されます。
zzz

8

アクセス許可を緩和すると、キーは無視されます。これを行っても何も得られません。

毎回パスワードを入力せずにキーを使用する場合、2つのオプションがあります。

「キーチェーンにパスワードを保存する」をチェックすると、毎回パスワードを入力する必要がなくなります。他のすべてのパスワードとともにキーチェーンに保存されます。これは推奨オプションです。

パスワードなしで秘密鍵ファイルを作成できます。既存の秘密鍵ファイルを変更して、パスワードで保護されないようにすることができます(パスワードの変更は、鍵自体ではなく、鍵ファイルにのみ影響します)。コマンドラインからを実行しssh -p、既存のパスフレーズを入力してから、新しいパスフレーズを空白のままにします。空のパスフレーズを使用すると、セキュリティ上のリスクがあります。プライベートキーファイルにアクセスできるユーザーは(バックアップにアクセスするなどして)すぐに使用できます。


答えてくれたことに感謝しますが、言及し忘れたことが1つあります。「キーチェーンのパスワードを記憶する」オプションをチェックしても効果がありません。次に接続するときにダイアログが再表示されます。(空のパスフレーズを使用すると、私のためのオプションではありません。)
titaniumdecoy

3
パスワードで保護されたキーをパスワードなしのキーに置き換えることを提案するのは本当にひどい考えです
...-Schmurfy

5

ソースの〜/ .sshディレクトリに秘密鍵を追加し、ssh-add -Kを入力してキーチェーンに追加し、公開鍵の内容を.ssh / authorized_keysにコピーした場合(正しい場合)アカウント)ターゲットサーバー上のファイルは、ダイアログボックスが消えます。

ファイル、権限、場所、およびコマンドの巧妙な組み合わせなので、時間がかかります。バグについて結論を急ぐことはありません。


3

Lion(Mac OS X 10.7)でもまったく同じ問題があります。私はバグだと思う... ssh認証がパスワードである場合、クライアントは最初に公開鍵を通過しますが、これは正常です。ただし、次回に新しいssh接続が確立されると、キーチェーンにパスフレーズを保存することを選択しても(パスワード認証には必要ありません)、パスフレーズの再入力を求められます...


1
私はこれもバグだと考えています。すべてがユキヒョウで正常に機能していましたが、コンピューターがスリープ状態から復帰するたびに、sshキーのパスワードが再入力されます。非常に迷惑な...
シュマーフィ

3

公開鍵を再生成する必要はありません。次の2つのコマンドを簡単に実行できます。

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

基本的に、公開キーファイルのアクセス許可を強化する必要があり、OSX認証エージェントにキーを追加する必要があります。


3

macOSの最新バージョン(10.12.2-Sierra)では、これは簡単な修正です。〜/ .ssh / configを編集してUseKeychainオプションを有効にするだけです:

Host *
UseKeychain yes

保存して解決しました。


2

この問題は、ssh-agentが停止したときにOS X 10.7.4システムで発生しました。再起動により問題が修正されました。(ssh-agentの再起動を試みることもできますが、キーチェーンが新しいssh-agentソケットを取得するのに十分かどうかわかりません。)


これは私の問題も1時間困惑した後に修正したものです。
-DannyRe

2
  1. 〜/ .ssh /がchmod 700であることを確認してください。

  2. 〜/ .ssh / id *ファイルが両方ともchmod 600であることを確認してください。

  3. / Applications / Utilities / Keychain Access.appを実行し、キーチェーンを修復します。

  4. ログアウト。(再起動はひどい考えではありません)

  5. ログインする

  6. 問題が解決しない場合は、既存の〜/ .ssh / id *ファイルをデスクトップに移動して、新しいキーを使用ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tldして新しいキーを生成し、新しいキーがより適切に機能するかどうかを確認してください。

私はLionにいますが、IIRC Snow Leopardも同じように機能しました。

ps-空白のsshパスフレーズを使用することを提案する人は誰でも、他の人がアドバイスを受け取らないように標識を付けるように強制する必要があります。


1

公開鍵を再生成することは私にとってはうまくいかないようです(10.8)。また、新しいSSH鍵を生成することもできません。たとえば、ログインキーチェーンをロックした後にgit pullを実行すると、最初にログインキーチェーンからパスワードを取得しようとする代わりに、ダイアログボックスがポップアップしてキーのパスワードを要求します。

ただし、最初にssh-agentを強制終了すると、ログインキーチェーンパスワードの入力を求められ、その後、SSHキーパスワードが取得されます。


こんにちは、これはこの質問に対する答えではなく、別の質問のように見えます。新しい質問として再投稿できますか?
スコットランド

1

もう1つの興味深い発見は、PEMファイルの内容をコピーして貼り付けると、ダッシュが欠落している可能性があることです。したがって、最後の行を忘れずに追加してください。

-----END RSA PRIVATE KEY-----

同様のことは、lastpassなどからsshキーを貼り付けるときに、すべてを1行に貼り付けることです。これは私にとっては問題のように思えたので、空白の秘密キーを正しい形式に戻すと、うまくいきました。
キャメロン

1

動作させるには、次の手順を実行する必要がありました。

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

最後のコマンドは次のようなものを出力するはずです: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.


0

同じ問題がありました。これを行うことで修正したようです。

1)id_dsaおよびid_dsa.pubファイルを古い名前に変更してバックアップしました。

2)空白のパスフレーズで新しいkeygenを実行しました。

リモートサーバーを監視するlaunchctl期間ジョブと連携し、端末でsshからログインします。

.bash_profileに次のものがあるため、端末にクイック関数authme関数があります

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

そのため、簡単なauthme remoteserver.comで新しいリモートキーがコピーされます。

バグはパスフレーズが変換されないことに関係していると思います(私の古いSnow Leopardにはまったくありませんでした)。

それを試して、それが役立つかどうかを確認してください。

10分以上かかることはありませんでした。これについて他に言及があるかどうかを確認するために、私は永遠にグーグルで過ごしました。このサイトは唯一のものでした!

オウェイン。


空白のパスフレーズを使用すると、残念ながら、私のためのオプションではありません
titaniumdecoy

0

同様の問題がありました。私が使用していた秘密鍵の形式が間違っていたことが判明しました。WinマシンでPuTTY Key Generatorを使用しましたが、OS Xのsshは異なる形式-Open SSH形式を想定しています。

このキーを生成するために使用したツール(PuTTY Key Generator)には、プライベートキーをOpen SSHで必要な形式に変換するオプションがありました。

単純なように:

  1. PuTTY Key Genを開きます
  2. 秘密鍵をロードします
  3. [変換]> [OpenSSHキーのエクスポート]を選択します。

保存するファイルには、適切な(OpenSSH)形式の元の秘密鍵が含まれています。


0

以下を確認してください:

  1. 秘密鍵にpem形式を使用しています。これは、Macがpemsで動作するopensshクライアントを使用しているためです。ppkは、パテ独自の形式であり、opensshと互換性がありません。ppkしかない場合は、putty keygenを使用してppkをpemに簡単に変換できます。
  2. pemファイルのアクセス許可は600です。秘密キーは、所有者のみがアクセスできるように設計されています。そのため、アクセス許可が他のユーザーに読み取りアクセスを許可する場合、セキュリティ上の脅威と見なされます。

これで問題を解決できるはずです。


-1

.ppkキーではなく.pemキーを使用します。


1
いくつかの説明とコンテキストを提供する長い回答を探しています。1行で答えるだけではありません。答えが正しい理由、理想的には引用を説明します。説明を含まない回答は削除される場合があります。
鉄人
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.