web-dev-qa-db-ja.com

Git GUIまたはssh-keygenを使用したSSH秘密鍵のアクセス権がオープンになっています

最近クローンを作成したりgithubにプッシュしたりすることができなくなり、根本的な原因を見つけようとしています。

これはウィンドウズです

私はcygwin + gitとmsysgitを持っています。

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

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

それは私に4つの環境でgitを使うことを試みることを与えます:

  • Windows cmdプロンプト
  • パワーシェル
  • Git Bash
  • サイグウィン

どういうわけか、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

これは私のc:\ users\ben \フォルダ内の.sshフォルダを使用しています。これはmsysgitによって使用されているものです。 .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

以前と同じ権限が得られます。

更新:

私はcygwinでそれらのファイルへの権限を修正しようとしました、そして、cygwinはそれらの権限を正しく報告します、gitbashはそうしません: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

どうすればこれらの権限を本当に修正できるかについてのアイデアはありますか?

240
Ben Scheirman

あなたはディレクトリ全体のアクセス権を変更しました。これはSplashが同意するものではないと思います。ディレクトリの元々のパーミッションが何であるかを覚えているのなら、私はそれを元に戻してから次のようにします。

cd ~/.ssh
chmod 700 id_rsa

.sshフォルダ内これは、所有者(あなた)に対してのみid_rsaファイルをrwx(読み取り、書き込み、実行)に設定し、それ以外のすべてのユーザーに対してはアクセスをゼロにします。

元の設定を覚えていない場合は、新しいユーザーを追加し、そのユーザー用の一連のSSHキーを作成して、デフォルトのアクセス許可を持つ新しい.sshフォルダーを作成します。 .sshフォルダとファイルをにリセットする権限の参照として、その新しい.sshフォルダを使用できます。

それでもうまくいかない場合は、msysgitのアンインストールを実行し、コンピュータ上のすべての.sshフォルダを削除して(安全のため)、次に希望の設定でmsysgitを再インストールして、最初からやり直してみます(とのことですが)あなたはすでにこれを試しました。

編集:グーグル経由でこのリンクも見つかりました - Linuxでは「警告:秘密の秘密鍵ファイルが修正されました!」を修正 linuxをターゲットにしていますが、liunx権限などを話しているので役に立ちます。

356
Koby

Cygwinのchmodにバグがあります。参照してください。

https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
74
kittikun

* nixシステムの場合、明らかな修正はchmod 600 id_rsa ofcですが、Windows 7ではしばらく壁に頭をぶつけなければなりませんでしたが、それから魔法の解決策を見つけました:

[マイコンピュータ]、[右クリック]、[プロパティ]、[システムの詳細設定]、[環境変数]の順に選択し、DELETE変数(システムとユーザー環境の両方から使用可能)に移動します。

CYGWIN

基本的に、mingw32の欠陥はgit windows binaryによって使用され、すべてのファイル644とすべてのフォルダ755を常に参照します。環境変数を削除してもその動作は変わりませんが、ssh.exeに問題を無視するように指示します。あなたがエクスプローラのセキュリティ設定を通してあなたのid_rsaに適切なパーミッションを設定するならば(あなた自身のものではなく、他のどのユーザも本当にそこに持っている必要はありません。 、あなたはまだ安全です。

さて、なぜcygwinとは異なるシステムであるmingw32がCYGWIN環境変数をany使用するのは私を超えています。私にとってはバグのように見えます。

17

私はXPを使っていて、Git BashはGithubと通信することができました。

  1. c:\cygwin\bin\cyg*(〜50ファイル)をc:\Program Files\Git\bin\にコピーする
  2. c:\cygwin\bin\ssh.exec:\Program Files\Git\bin\にコピー(上書き)
  3. 以下を含むファイルc:\Documents and Settings\<username>\.ssh\configを作成します。

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (オプション)接続がデバッグされていることを確認するには、ssh -v git@githubを使用します。

  5. プッシュしてみてください。

背景:一般的な問題は、これら2つの組み合わせです。

  • バグ:mingw32はすべてのファイルを644(other/group-reading)と見なしていますが、mingw32、cygwin、またはWindowsで試しても何も解決できません。
  • mingw32のSSHバージョンでは、秘密鍵にはそれが許可されません(通常、サーバーでは適切なポリシーです)。
13
Steve Clay

Windows 7ではGitを使用しています ここで (CygwinではなくMinGWを使用しています):

  1. Windowsエクスプローラで、id_rsaファイルを右クリックして[プロパティ]を選択します。
  2. セキュリティタブを選択して編集...をクリックします。
  3. 管理者以外のすべてのグループに対して、[フルコントロール]の横にある[拒否]ボックスをオンにします。
  4. Gitコマンドを再試行してください
10
Brett Pennings

プロパティからファイルのアクセス権を変更し、継承を無効にしてchmod 400を実行しても私にはうまくいきませんでした。私の秘密鍵ファイルに対する許可は次のとおりです。

-r - r ----- 1アレックスなし1766 Mar 8 13:04 /home/alex/.ssh/id_rsa

それから私はそのグループがNoneであることに気づいたので、走ったばかりです

アレックス:管理者〜/ .ssh/id_rsa

それから私は正常にchmod 400でパーミッションを変更してgit Pushを実行することができました。

6
alex.m

それでは、Win7でのアクセス許可自体に関して、Windowsファイルに実際に変更を加えた方法は次のとおりです。Windowsエクスプローラでsshキーを探します。

ファイルを右クリックし、[プロパティ]> [セキュリティ]タブ> [詳細設定]ボタン> [権限の変更]の順にクリックします。

今すぐあなたのユーザー名ではないすべての人を削除します。これには管理者ユーザーとシステムユーザーが含まれます。この時点であなたは許可を継承することについての対話を得るかもしれません - 我々はこのファイルを変更したいだけなので、継承しないオプションを選択します - 。

[OK]をクリックして、完了するまで保存します。

私のウィンドウはコマンドラインからファイルのアクセス権を変更しないので、私は何日もこれと戦った。このようにすると、makeが奇妙な結果をもたらす可能性がある刺激的な回避策を使用する代わりに、実際にも実行されます。

4
diannaL

MACユーザーの方へ:

端末にこれを入力して、鍵ペアファイルの設定を変更します。

chmod og-r *filename.pem*

(正しいディレクトリにいること、またはコマンドのファイル名を正しくパスすることを確認してください)。

4
Andrew

実行して解決します。

chmod 400 ~/.ssh/id_rsa

助けたいと思います。がんばろう。

3

つい最近、Windows XPで同じ問題が発生しました。 〜/ .ssh/id_rsaファイルに700をchmodしようとしましたが、うまくいきませんでした。 〜/ .ssh/id_rsaでls -lを使用して権限を確認したところ、私の有効な権限はまだ644であることがわかりました。

それから私は、Windowsのパーミッションもフォルダからのパーミッションを継承していることを思い出しました、そしてそのフォルダはまだ誰にでも開いていました。解決策としてはフォルダのアクセス権も設定することが考えられますが、このファイルの継承を無視するようにシステムに指示することをお勧めします。これは、ファイルのプロパティの[セキュリティ]タブにある[詳細設定]オプションを使用し、[親のアクセス許可から継承する]のチェックを外して実行できます。

これは同じ問題を抱えている人にとっては役に立つかもしれません。

2
daramarak

最近問題を突き抜けた後、これがトップGoogleの結果の1つであることを私はここで議論に記載されている回避策でチップインすると思いました。 http://code.google.com/p/msysgit/issues/detail?id = 261#c4

単にあなたのcygwin ssh.exeでmysys ssh.exeを上書きする必要があります。

2
chriskhan

ステップ1を実行する必要はないかもしれませんが、2つのことを行うことでこれを修正できました。

  1. cygwin ssh.exeおよびすべてのcyg * .dllからGitのbinディレクトリにコピーします(これは必要ではないかもしれませんが、私が行った手順ですが、これだけでは問題は修正されませんでした)

  2. 次の手順に従ってください: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    〜/ .ssh/configファイルに詳細を追加しました:

ホストheroku.com
ホスト名heroku.com
ポート22
IdentitiesOnlyはい
IdentityFile〜/ .ssh/id_heroku
TCPKeepAliveはい
ユーザーブランドン

Heroku.comのメールアドレスとしてUserを使用する必要がありました。これは、キーを作成する必要があることを意味します。キーを作成するためにこれに従い、キーの名前の入力を求められたら、必ずid_heroku http://help.github.com/win-set-up-git/

  1. 次に、キーを追加します。
    herokuキー:〜/ .ssh/id_heroku.pubを追加
1
Christy Hotney

私にとってのトリックはCYGWIN環境変数を次のように更新することでした: "tty nodosfilewarning = "。鍵をchmodする必要すらありませんでした。

1
tohokami

これは、ファイルを正しくchmodするだけでは十分ではない、Windows上で特に複雑な問題です。あなたはあなたの環境をセットアップしなければなりません。

Windowsでは、これは私のために働きました:

  1. Cygwinをインストールしてください。

  2. Msysgit ssh.exeをcygwinのssh.exeに置き換えます。

  3. Cygwin bashを使用して、chmod 600で秘密鍵ファイルを作成しました。これは私にとっては "id_rsa"でした。

  4. それでも機能しない場合は、「コントロールパネル」 - >「システムのプロパティ」 - >「詳細」 - >「環境変数」の順に選択して、以下の環境変数を追加します。その後、手順3を繰り返します。

    変数値
    CYGWIN sbmntsec

1

私は今Git 1.6.5で遊んでいます、そしてあなたの設定を再現することはできません。

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_PuTTY.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_PuTTY.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone [email protected]:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh [email protected]
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide Shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmodは私のキーのファイルパーミッションも変更しません。

環境:

  • NTFS上のWindows Server 2008 SP2
  • ユーザー:管理者
  • 環境変数:
    • PLINK_PROTOCOL = ssh
    • HOME =/c/profiles/home

更新: Git 1.6.5.1でも動きます。

1
alexandrul

端末に入力します。

chmod -Rf 700 ~/.ssh/

そしてさらに試みる。

0

私のシステムは、bash/cygwin/git/msysgit/maybe-moreで少し混乱しています。

chmodはキーまたはconfigファイルに影響しませんでした。

次に、Windowsからアプローチすることにしました。

  1. 権限を修正する必要があるファイルを右クリックします。
  2. Propertiesを選択します。
  3. Securityタブを選択します。
  4. 下部の[Advanced]をクリックします。
  5. 上部のChangeの横にあるOwnerをクリックします。
  6. 「My-Awesome-Username」と入力し(明らかに現在のWindowsユーザー名に変更します)、[Check Names]、[OK]の順にクリックします。
  7. Permission entries:の下で、「My-Awesome-Username」ではない各ユーザーを強調表示し、Removeを選択します。 「My-Awesome-Username」が残り1つになるまでこれを繰り返します。
  8. 「My-Awesome-Username」を選択し、下のEditをクリックします。
  9. 上部のType:Allowに設定されていることを確認し、Full controlの横のチェックボックスをオンにします。
  10. OKApplyOKOKを押します。

  11. もう一度試してみてください...

モックバッシュがファイルの所有権を制御できないことがあるようです。モックバッシュスクリプトから生成されるため、特に奇妙です。図を移動します。

0
Jack_Hu

@ kobyの答えは私にはうまくいかないので、少し変更を加えます。

cd ~/.ssh
chmod 700 id_rsa.pub

これは私のMacではうまくいきます。

0
Han Pengbo

その秘密鍵と公開鍵のペア(id_rsa/id_rsa.pub)を保持したい、または壁にぶつかって楽しんだりする理由がない限り、それらを再作成してgithubで公開鍵を更新することをお勧めします。

〜/ .sshディレクトリのバックアップコピーを作成することから始めます。

次のように入力して、既存のファイルを上書きするかどうかについて「y」と応答します。

ssh-keygen -t rsa

公開鍵の内容をクリップボードにコピーします。 (下記はMac上でのやり方です)。

cat ~/.ssh/id_rsa.pub | pbcopy

Githubであなたのアカウントに行き、このキーを追加してください。

Name: My new public key
Key: <PASTE>

端末を終了して新しい端末を再起動してください。

公開鍵に「パスワードを入力してください」などのような無意味なエラーメッセージが表示された場合は、最初からやり直すことを検討してください。上で見たように、それは複雑ではありません。

0
l3x

他のマシンからキーファイルをコピーしましたか?

クライアントマシン上にid_rsaファイルを作成した後、必要なキーを貼り付けました。権限の問題はありません。設定するものはありません。それはうまくいった。秘密鍵を作成するためにPuTTYgenを使用している場合も機能します。

別のマシンからコピーした場合、おそらく隠れたグループの問題があります。

2台のWindows 8.1マシンでテスト済み。 Sublime Text 3を使用して秘密鍵をコピーして貼り付けます。 Git Bashを使う(Git-1.9.4-preview20140611)。

0
PhilT

基本的な質問に対する直接的な回答ではなく、cygwinのフォルダがどのように機能するかについてのあなたの質問に対する回答です。 Windowsユーザーディレクトリではなく、ユーザー固有の設定でそのフォルダを扱います。

0
J Wynia

私はVagrantボックスにSSHで接続しようとしたWindows 10でも同じ問題がありました。これは古いOpenSSHバージョンのバグのようです。私にとってうまくいったこと:

  1. 最新のOpenSSHをからインストールしてください http://www.mls-software.com/opensshd.html
  2. where.exe ssh

(Powershellを使用している場合は「.exe」に注意してください)

あなたは次のように見えるかもしれません:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

上記の例では、最新のOpenSSHがパスの2番目にあるため実行されません。

順序を変更するには

  1. Windowsボタンを右クリック - >設定 - > "システム環境変数の編集"
  2. [詳細設定]タブで[環境変数]をクリックします。
  3. [システム環境変数]の下の[パス]を編集します。
  4. 一番上に表示されるように「C:\ Program Files\OpenSSH\bin」と「上へ移動」を選択します。
  5. OKをクリック
  6. 新しい環境変数が適用されるようにコンソールを再起動します。
0
Jasper Citi

Cygwinインストールを2015年2月頃のバージョン(1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin)にアップグレードした後、突然UNPROTECTED PRIVATE KEY FILE警告に出くわしました。

次のコマンドを実行した後、この問題を修正しました。

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

別の答え 別の質問への文脈はより多くの文脈を与える)

0
Abdull

私はgitをPowershellで完全に機能させることに成功したことは一度もありません。しかし、git bashシェルではパーミッション関連の問題はありませんでしたし、chmodなどを設定する必要もありませんでした。

0
Sam Kenny