SSHキーのパスワードを変更しようとすると、次のエラーメッセージが表示されます。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
どういう意味ですか?この問題をどのように解決できますか?
編集する:これは私の問題を解決しました。
sudo chmod 600 ~/.ssh/id_rsa
答え1
fftccの回答は、権限がSSH要件に準拠する方法についての詳細なガイドラインを提供しますが、知っておくと便利です。なぜ?これらの要件が存在します。
秘密鍵と公開鍵のペアを次のように考えることができます。秘密そしてテスト。
秘密は秘密鍵です。ただ本人だけが知っています。ドアの鍵と同じです。南京錠にぴったりです。ロックするテストこれ秘密:公開鍵で秘密鍵を確認できます。 (実際の暗号化方式はもっと面白いです。公開鍵は秘密鍵を知らずにテストできますが、ドアロックはできません。)
ドアロックは公開されています。誰もがそれを見ることができ、鍵を入れることができますが(私を信じてください。はい)、正しい南京錠のみが許可されます。
人々が秘密鍵(またはドアキー)をコピーすることを許可すると、彼らはあなたのサーバー(またはあなたの家)に入ることができます。したがって、誰も秘密鍵を読み取ることができません。
他の回答で説明したように、シークレットの上のすべてのディレクトリに対する書き込み権限を使用すると、シークレットに到達するまでユーザーは繰り返し権限を取得できます。これが、sshがその要件よりも高いユーザーホームディレクトリの問題を提起する理由です。最初は奇妙に見えるかもしれません。フラッシュ。ところで、sshがユーザーのホームディレクトリの上のディレクトリも公に書き込み禁止であると仮定または確認するかどうかはわかりません。もちろん、これは一般的な設定ですが、必ずしも指定されているわけではありません。
これらの原則に応じて、さまざまなファイルに必要な権限が最も適しています。特に、サーバー側で特定のファイル(Authorized_keysなど)を想定しているために発生する特定の複雑さがあります。必要sshdが読めるようにするサードパーティの読み取りアクセス。ただし、sshdはrootとして実行されます。結局のところ、sshdは特権アドレスでソケットを開き、ファイル権限に関係なく、必要なものをすべて読み取ることができます。
ところで、これはあなたのローカルシステム管理者インターンがあなたのビットコイン財布であるchmod 600 my buttにアクセスするために使用するキーを読むことができることを意味します。したがって、あなたの秘密鍵を暗号化することができますが、これは最初は重複しているように見えますが、あなたが私たちの管理者に会ったことがあれば完全に理解されます。問題は実際に秘密鍵の暗号化に関連しています。権限の問題は純粋に付随的です。
答え2
マニュアルページから:
ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase]
[-P old_passphrase]
ファイルに正しい権限があることを確認してください。
答え3
sudo ssh-keygen -f ~/.ssh/YOU_PRIVATE_SSH_KEY -p
端末にメッセージが表示されたら、Permissions 0644
次のコマンドを実行します。root
端末にメッセージが表示される場合failed: Permission denied
権限の問題を解決するには、まずホームディレクトリとディレクトリの正しい所有権と権限を設定する必要があります.ssh
。1
sudo chown -R user:user $HOME sudo chmod 750 $HOME sudo chmod -R 700 $HOME/.ssh
これにより、SSH要件を満たすために.ssh内のすべてのファイルに必要な権限が生成されます。各ディレクトリfiles.sshのSSH推奨事項と要件(下線)は、以下にリストされています(マンページから):
~/.ssh/id_rsa (またはPRIV KEY - プライベート、マスターキー) - これらのファイルには機密データ(認証キーなど)が含まれており、ユーザーは読み取ることができますが、他の人はアクセスできないはずです(0600など)。 。 。秘密鍵ファイルに他の人がアクセスできる場合、sshプログラムは秘密鍵ファイルを無視します。
sudo chmod 600 ~/.ssh/id_rsa
~/.ssh/config — 悪用の可能性があるため、このファイルには厳格な権限が必要です。つまり、ユーザーは読み取り/書き込みが可能で、他の人は書き込みできません。 - 0644を取り付けるだけで十分です。
sudo chmod 644 ~/.ssh/config
~ /.ssh/authorized_keys — このファイルはあまり敏感ではありませんが、ユーザーの読み取りおよび書き込み権限を 0644 に設定して、他の人が書き込みできないようにすることをお勧めします。2
sudo chmod 644 ~/.ssh/authorized_keys
~/.ssh/known_hosts — このファイルはあまり敏感ではありませんが、ユーザーには読み取り/書き込み権限を与え、他のすべてのユーザーには読み取り専用権限を与えることをお勧めします。したがって、0644です。
chmod 644 ~/.ssh/known_hosts
~/.ssh/ — このディレクトリのすべての内容を秘密にする必要がある一般的な要件はありませんが、推奨される読み取り/書き込み/実行権限はユーザー専用であり、他のユーザーはアクセスできません。 - 0700で十分です。
sudo chmod 700 ~/.ssh
~/.ssh/id_rsa.pub(または公開鍵) - これらのファイルは機密ではなく、誰でも読むことができます(必ずしもそうではありません)。
1ディレクトリへの書き込み権限を使用すると、ユーザーはディレクトリに含まれるファイルとディレクトリの権限を変更できます。.ssh
所有者以外には、誰にも知られてはならない秘密の秘密鍵が含まれています。他のユーザーがインクルードディレクトリ(.ssh
)への書き込み権限を持っている場合は、そのディレクトリのキーの権限を変更してファイルを読み取ることができます。このパラメータはファイルシステムのルートに繰り返し適用されます。
2authorized_keys
厳格な内容を含まない場合でも秘密- その中のすべての鍵は公開されます。 - ログインできる人を指定します。 (不明ですが確認可能)秘密鍵ファイルにリストされた公開鍵に関連付けられます。したがって、Authorized_keysへの書き込みアクセスはアカウント所有者に制限する必要があります。