250

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

これはWindows上にあります

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

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

  • OpenSSH
  • Windows コマンド プロンプトから Git を使用する

これにより、git を使用できる 4 つの環境が得られます。

  • Windows コマンド プロンプト
  • パワーシェル
  • Git バッシュ
  • シグウィン

どういうわけか、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:\users\ben\ フォルダーの .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

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

アップデート:

cygwin でこれらのファイルへのアクセス許可を修正しようとしましたが、cygwin はそれらのアクセス許可を正しく報告しますが、gitbash はそうではありません

これらのアクセス許可を実際に修正する方法についてのアイデアはありますか?

4

25 に答える 25

373

ディレクトリ全体のアクセス許可を変更しましたが、スプラッシュは悪い考えであることに同意します。ディレクトリの元のアクセス許可が何であるかを覚えている場合は、それらを元のアクセス許可に戻してから、次のことを行います。

cd ~/.ssh
chmod 700 id_rsa

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

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

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

編集:Google経由でこのリンクも見つけました- 「警告:保護されていないプライベートキーファイル!」を修正しています Linux では Linuxを対象としていますが、liunx のパーミッションなどについて話しているので、役立つかもしれません。

于 2009-10-13T15:01:43.963 に答える
75

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
于 2013-05-17T19:28:53.803 に答える
18

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

マイコンピュータ/右クリック/プロパティ/システムの詳細設定/環境変数に移動し、変数を削除します(おそらくシステムとユーザー環境の両方から):

シグウィン

基本的に、これは git Windows バイナリで使用される mingw32 の欠陥であり、常にすべてのファイル 644 とすべてのフォルダー 755 が表示されます。環境変数を削除してもその動作は変わりませんが、ssh.exe に問題を無視するように指示しているようです。エクスプローラーのセキュリティ設定を使用して id_rsa に適切なアクセス許可を設定した場合 (実際には、「全員」、「管理者」、「システム」ではなく、自分以外のユーザーをそこに配置する必要はありません。何もありません。あなただけです) 、あなたはまだ安全です。

さて、cygwin とは異なるシステムである mingw32が CYGWIN 環境変数を使用する理由は、私にはわかりません私にはバグのように見えます。

于 2012-06-26T12:37:49.460 に答える
13

私は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 (その他/グループ読み取り可能) として認識し、mingw32、cygwin、または Windows で試しても修正できませんでした。
  • mingw32 の SSH バージョンでは、秘密鍵に対してそれが許可されません (通常、サーバーでは適切なポリシーです)。
于 2011-06-17T03:16:47.120 に答える
10

ここにある Git を使用する Windows 7 の場合(Cygwin ではなく MinGW を使用します):

  1. Windows エクスプローラーで、id_rsa ファイルを右クリックし、[プロパティ] を選択します。
  2. [セキュリティ] タブを選択し、[編集...] をクリックします。
  3. 管理者を除くすべてのグループに対して、[フル コントロール] の横にある [拒否] ボックスをオンにします。
  4. Git コマンドを再試行してください
于 2011-12-29T00:35:42.157 に答える
7

わかりましたので、Win7 でのアクセス許可自体に関して、実際に Windows ファイルの変更を強制した方法は次のとおりです。

ファイルを右クリック>プロパティ>セキュリティタブ>詳細ボタン>権限の変更

実際にあなたのユーザー名ではないすべての人を削除します。これには、管理者およびシステム ユーザーが含まれます。この時点で、権限の継承に関するダイアログが表示される場合があります。このファイルのみを変更するため、継承しないオプションを選択してください。

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

私のウィンドウはコマンドラインからファイルのアクセス許可を変更しないため、これと何日も戦いました。このようにして、奇妙な結果をもたらす可能性のあるエキサイティングな回避策を使用する代わりに、実際に行われます。

于 2013-07-19T09:57:35.853 に答える
3

MAC ユーザーの場合:

ターミナルで次のように入力して、キー ペア ファイルの設定を変更します。

chmod og-r *filename.pem*

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

于 2012-06-07T00:39:09.140 に答える
2

最近問題に遭遇し、これが Google の上位の結果の 1 つになった後、ここでの議論に文書化されている簡単な回避策に参加すると思いました: http://code.google.com/p/msysgit/issues/detail?id =261#c40

mysys ssh.exe を cygwin ssh.exe で上書きするだけです。

于 2010-10-12T10:31:39.373 に答える
2

私はそれを実行して解決します:

chmod 400 ~/.ssh/id_rsa

お役に立てれば幸いです。幸運を。

于 2014-10-23T17:46:11.017 に答える
2

最近、Windows XP でも同じ問題が発生しました。~/.ssh/id_rsa ファイルで chmod 700 を試みましたが、うまくいかないようでした。~/.ssh/id_rsa で ls -l を使用してパーミッションを調べたところ、有効なパーミッションがまだ 644 であることがわかりました。

次に、Windows のアクセス許可もフォルダーからアクセス許可を継承し、フォルダーはまだすべてのユーザーに開かれていることを思い出しました。解決策は、フォルダーのアクセス許可も設定することですが、このファイルの継承を無視するようにシステムに指示する方がよいと思います。これは、ファイルのプロパティのセキュリティ タブの詳細オプションを使用し、「親権限から継承...」のチェックを外すことで実行できます。

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

于 2010-04-07T09:37:01.120 に答える
1

これは、ファイルを正しく chmod するだけでは不十分な Windows では特に複雑な問題です。環境をセットアップする必要があります。

Windowsでは、これでうまくいきました:

  1. シグウィンをインストールします。

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

  3. cygwin bash を使用して、秘密鍵ファイルを chmod 600 します。これは、私にとっては「id_rsa」でした。

  4. それでもうまくいかない場合は、[コントロール パネル] -> [システムのプロパティ] -> [詳細設定] -> [環境変数] に移動し、次の環境変数を追加します。その後、手順 3 を繰り返します。

    変数 値
    CYGWIN sbmntsec

于 2011-08-01T14:40:16.320 に答える
1

私にとってのトリックは、CYGWIN環境変数を「tty nodosfilewarning」で更新することでした。キーをchmodする必要さえありませんでした。

于 2013-03-23T12:14:45.813 に答える
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 git@github.com: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 git@github.com
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 も同様に機能します。

于 2009-10-13T19:11:30.393 に答える
1

手順 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 はい
ユーザー brandon

Heroku.com のメール アドレスとして User を使用する必要がありました 注: これは、キーを作成する必要があることを意味します。これに従ってキーを作成し、キーの名前を求めるプロンプトが表示されたら、必ず id_heroku http:/を指定してください。 /help.github.com/win-set-up-git/

  1. 次にキーを追加します:
    heroku keys:add ~/.ssh/id_heroku.pub
于 2012-01-12T18:08:23.263 に答える
0

その秘密鍵と公開鍵のペア (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>

端末を終了し、新しい端末を再起動します。

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

于 2013-09-05T23:07:49.077 に答える
0

主な質問に対する直接の回答ではありませんが、cygwin のフォルダーの仕組みに関する質問について... 原則として、cygwin はすべての「あなたの」ファイルを c:\cygwin\home\username と同等の場所に配置します。このフォルダーは、Windows ユーザー ディレクトリではなく、ユーザー固有の設定用に扱われます。

于 2009-10-13T17:25:13.150 に答える
0

Powershellでgitを完全に機能させることはできませんでした。しかし、git bash シェルでは、パーミッション関連の問題はなく、chmod などを設定する必要もありませんでした... ssh を Github に追加した後、私は稼働していました。

于 2014-02-27T18:50:06.433 に答える
0

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

cd ~/.ssh
chmod 700 id_rsa.pub

これは、Macでうまく機能します。

于 2015-04-09T03:45:16.660 に答える