1. ホーム
  2. ギット

[解決済み】Git GUIやssh-keygenを使用したSSH秘密鍵のパーミッションがオープンすぎる。

2022-04-01 10:16:44

質問

最近、cloneやgithubへのpushができなくなったので、根本的な原因を探っています。

これはWindowsの場合です

msysgitの他にcygwin + gitも持っています。

Msysgitは以下のオプションでインストールしました。

  • OpenSSH
  • Windows のコマンドプロンプトから Git を使う

これで4つの環境でgitを使ってみることができました。

  • Windowsのcmdプロンプト
  • パワーシェル
  • Git Bash
  • Cygwin

どういうわけか、msysgit、cmd.exe、またはPowershellを使ってリポジトリをクローンしようとすると、以下のエラーが表示される状態に陥っています。

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.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. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

これは、msysgitで使用されている、私のc:the \usersbenhtmlフォルダの中の.sshフォルダを使用しているのです。 .sshフォルダが他の場所にあるので、cygwinが動作するのだと思いますが、なぜでしょうか

Git Bashで、パーミッションを確認する。

$ ls -l -a ~/.ssh

ということになります。

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

このパーミッションはどうやら緩すぎるようです。 どうしてこのようなことになったのか、私には見当もつきません。

変えてみるか...。

$ chmod -v -R 600 ~/.ssh

ということを教えてくれます。

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

しかし、何の効果もないようです。 まだ同じエラーが発生し

$ ls -l -a ~/.ssh

は、以前と同じパーミッションが得られます。

UPDATEしてください。

cygwinでこれらのファイルのパーミッションを修正しようとしたところ、cygwinはパーミッションを正しく報告しますが、gitbashはそうしません。 alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

これらのパーミッションを本当に修正する方法について、何かアイデアはありますか?

解決方法は?

ディレクトリ全体のパーミッションを変更したとのことですが、これはスプラッシュさんと同意見で、悪い考えだと思います。 もしディレクトリの元のパーミッションを覚えているのであれば、それを元に戻して、次のようにしてみてください。

cd ~/.ssh
chmod 700 id_rsa

を.sshフォルダの中に入れてください。 これで id_rsa ファイルが所有者 (あなた) のみの rwx (読み取り、書き込み、実行) に設定され、他の人はゼロアクセスになります。

元の設定を覚えていない場合は、新しいユーザーを追加し、そのユーザー用のSSH鍵のセットを作成します。これにより、デフォルトのパーミッションを持つ新しい.sshフォルダが作成されます。 この新しい.sshフォルダを、.sshフォルダとファイルをリセットするためのパーミッションの基準として使用することができます。

それでもダメなら、msysgitをアンインストールして、コンピュータ上のすべての.sshフォルダを削除してから(念のため)、希望の設定でmsysgitを再インストールして、完全に最初からやり直してみます(もう試したと言ったと思うのですが)。

編集しました。また、Google経由でこのリンクを見つけました。 Linux での "WARNING: UNPROTECTED PRIVATE KEY FILE!" を修正する。 linuxを対象にしていますが、liunxのパーミッションなどの話なので、参考になるかもしれません。