最近クローンを作成したりgithubにプッシュしたりすることができなくなり、根本的な原因を見つけようとしています。
これはウィンドウズです
私はcygwin + gitとmsysgitを持っています。
Msysgitは以下のオプションでインストールされました。
それは私に4つの環境で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
これは私の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
どうすればこれらの権限を本当に修正できるかについてのアイデアはありますか?
あなたはディレクトリ全体のアクセス権を変更しました。これはSplashが同意するものではないと思います。ディレクトリの元々のパーミッションが何であるかを覚えているのなら、私はそれを元に戻してから次のようにします。
cd ~/.ssh
chmod 700 id_rsa
.sshフォルダ内これは、所有者(あなた)に対してのみid_rsaファイルをrwx(読み取り、書き込み、実行)に設定し、それ以外のすべてのユーザーに対してはアクセスをゼロにします。
元の設定を覚えていない場合は、新しいユーザーを追加し、そのユーザー用の一連のSSHキーを作成して、デフォルトのアクセス許可を持つ新しい.sshフォルダーを作成します。 .sshフォルダとファイルをにリセットする権限の参照として、その新しい.sshフォルダを使用できます。
それでもうまくいかない場合は、msysgitのアンインストールを実行し、コンピュータ上のすべての.sshフォルダを削除して(安全のため)、次に希望の設定でmsysgitを再インストールして、最初からやり直してみます(とのことですが)あなたはすでにこれを試しました。
編集:グーグル経由でこのリンクも見つかりました - Linuxでは「警告:秘密の秘密鍵ファイルが修正されました!」を修正 linuxをターゲットにしていますが、liunx権限などを話しているので役に立ちます。
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
* nixシステムの場合、明らかな修正はchmod 600 id_rsa
ofcですが、Windows 7ではしばらく壁に頭をぶつけなければなりませんでしたが、それから魔法の解決策を見つけました:
[マイコンピュータ]、[右クリック]、[プロパティ]、[システムの詳細設定]、[環境変数]の順に選択し、DELETE変数(システムとユーザー環境の両方から使用可能)に移動します。
CYGWIN
基本的に、mingw32の欠陥はgit windows binaryによって使用され、すべてのファイル644とすべてのフォルダ755を常に参照します。環境変数を削除してもその動作は変わりませんが、ssh.exeに問題を無視するように指示します。あなたがエクスプローラのセキュリティ設定を通してあなたのid_rsaに適切なパーミッションを設定するならば(あなた自身のものではなく、他のどのユーザも本当にそこに持っている必要はありません。 、あなたはまだ安全です。
さて、なぜcygwinとは異なるシステムであるmingw32がCYGWIN環境変数をany使用するのは私を超えています。私にとってはバグのように見えます。
私はXPを使っていて、Git BashはGithubと通信することができました。
c:\cygwin\bin\cyg*
(〜50ファイル)をc:\Program Files\Git\bin\
にコピーするc:\cygwin\bin\ssh.exe
をc:\Program Files\Git\bin\
にコピー(上書き)以下を含むファイル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"
(オプション)接続がデバッグされていることを確認するには、ssh -v git@github
を使用します。
背景:一般的な問題は、これら2つの組み合わせです。
Windows 7ではGitを使用しています ここで (CygwinではなくMinGWを使用しています):
プロパティからファイルのアクセス権を変更し、継承を無効にしてchmod 400を実行しても私にはうまくいきませんでした。私の秘密鍵ファイルに対する許可は次のとおりです。
-r - r ----- 1アレックスなし1766 Mar 8 13:04 /home/alex/.ssh/id_rsa
それから私はそのグループがNoneであることに気づいたので、走ったばかりです
アレックス:管理者〜/ .ssh/id_rsa
それから私は正常にchmod 400でパーミッションを変更してgit Pushを実行することができました。
それでは、Win7でのアクセス許可自体に関して、Windowsファイルに実際に変更を加えた方法は次のとおりです。Windowsエクスプローラでsshキーを探します。
ファイルを右クリックし、[プロパティ]> [セキュリティ]タブ> [詳細設定]ボタン> [権限の変更]の順にクリックします。
今すぐあなたのユーザー名ではないすべての人を削除します。これには管理者ユーザーとシステムユーザーが含まれます。この時点であなたは許可を継承することについての対話を得るかもしれません - 我々はこのファイルを変更したいだけなので、継承しないオプションを選択します - 。
[OK]をクリックして、完了するまで保存します。
私のウィンドウはコマンドラインからファイルのアクセス権を変更しないので、私は何日もこれと戦った。このようにすると、makeが奇妙な結果をもたらす可能性がある刺激的な回避策を使用する代わりに、実際にも実行されます。
MACユーザーの方へ:
端末にこれを入力して、鍵ペアファイルの設定を変更します。
chmod og-r *filename.pem*
(正しいディレクトリにいること、またはコマンドのファイル名を正しくパスすることを確認してください)。
実行して解決します。
chmod 400 ~/.ssh/id_rsa
助けたいと思います。がんばろう。
つい最近、Windows XPで同じ問題が発生しました。 〜/ .ssh/id_rsaファイルに700をchmodしようとしましたが、うまくいきませんでした。 〜/ .ssh/id_rsaでls -lを使用して権限を確認したところ、私の有効な権限はまだ644であることがわかりました。
それから私は、Windowsのパーミッションもフォルダからのパーミッションを継承していることを思い出しました、そしてそのフォルダはまだ誰にでも開いていました。解決策としてはフォルダのアクセス権も設定することが考えられますが、このファイルの継承を無視するようにシステムに指示することをお勧めします。これは、ファイルのプロパティの[セキュリティ]タブにある[詳細設定]オプションを使用し、[親のアクセス許可から継承する]のチェックを外して実行できます。
これは同じ問題を抱えている人にとっては役に立つかもしれません。
最近問題を突き抜けた後、これがトップGoogleの結果の1つであることを私はここで議論に記載されている回避策でチップインすると思いました。 http://code.google.com/p/msysgit/issues/detail?id = 261#c4
単にあなたのcygwin ssh.exeでmysys ssh.exeを上書きする必要があります。
ステップ1を実行する必要はないかもしれませんが、2つのことを行うことでこれを修正できました。
cygwin ssh.exeおよびすべてのcyg * .dllからGitのbinディレクトリにコピーします(これは必要ではないかもしれませんが、私が行った手順ですが、これだけでは問題は修正されませんでした)
次の手順に従ってください: 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/
私にとってのトリックはCYGWIN環境変数を次のように更新することでした: "tty nodosfilewarning = "。鍵をchmodする必要すらありませんでした。
これは、ファイルを正しくchmodするだけでは十分ではない、Windows上で特に複雑な問題です。あなたはあなたの環境をセットアップしなければなりません。
Windowsでは、これは私のために働きました:
Cygwinをインストールしてください。
Msysgit ssh.exeをcygwinのssh.exeに置き換えます。
Cygwin bashを使用して、chmod 600で秘密鍵ファイルを作成しました。これは私にとっては "id_rsa"でした。
それでも機能しない場合は、「コントロールパネル」 - >「システムのプロパティ」 - >「詳細」 - >「環境変数」の順に選択して、以下の環境変数を追加します。その後、手順3を繰り返します。
変数値
CYGWIN sbmntsec
私は今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は私のキーのファイルパーミッションも変更しません。
環境:
更新: Git 1.6.5.1でも動きます。
端末に入力します。
chmod -Rf 700 ~/.ssh/
そしてさらに試みる。
私のシステムは、bash/cygwin/git/msysgit/maybe-moreで少し混乱しています。
chmod
はキーまたはconfig
ファイルに影響しませんでした。
次に、Windowsからアプローチすることにしました。
Properties
を選択します。Security
タブを選択します。Advanced
]をクリックします。Change
の横にあるOwner
をクリックします。Check Names
]、[OK
]の順にクリックします。Permission entries:
の下で、「My-Awesome-Username」ではない各ユーザーを強調表示し、Remove
を選択します。 「My-Awesome-Username」が残り1つになるまでこれを繰り返します。Edit
をクリックします。Type:
がAllow
に設定されていることを確認し、Full control
の横のチェックボックスをオンにします。OK
、Apply
、OK
、OK
を押します。
もう一度試してみてください...
モックバッシュがファイルの所有権を制御できないことがあるようです。モックバッシュスクリプトから生成されるため、特に奇妙です。図を移動します。
@ kobyの答えは私にはうまくいかないので、少し変更を加えます。
cd ~/.ssh
chmod 700 id_rsa.pub
これは私のMacではうまくいきます。
その秘密鍵と公開鍵のペア(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>
端末を終了して新しい端末を再起動してください。
公開鍵に「パスワードを入力してください」などのような無意味なエラーメッセージが表示された場合は、最初からやり直すことを検討してください。上で見たように、それは複雑ではありません。
他のマシンからキーファイルをコピーしましたか?
クライアントマシン上にid_rsa
ファイルを作成した後、必要なキーを貼り付けました。権限の問題はありません。設定するものはありません。それはうまくいった。秘密鍵を作成するためにPuTTYgenを使用している場合も機能します。
別のマシンからコピーした場合、おそらく隠れたグループの問題があります。
2台のWindows 8.1マシンでテスト済み。 Sublime Text 3を使用して秘密鍵をコピーして貼り付けます。 Git Bashを使う(Git-1.9.4-preview20140611)。
基本的な質問に対する直接的な回答ではなく、cygwinのフォルダがどのように機能するかについてのあなたの質問に対する回答です。 Windowsユーザーディレクトリではなく、ユーザー固有の設定でそのフォルダを扱います。
私はVagrantボックスにSSHで接続しようとしたWindows 10でも同じ問題がありました。これは古いOpenSSHバージョンのバグのようです。私にとってうまくいったこと:
(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番目にあるため実行されません。
順序を変更するには
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
( 別の答え 別の質問への文脈はより多くの文脈を与える)
私はgitをPowershellで完全に機能させることに成功したことは一度もありません。しかし、git bashシェルではパーミッション関連の問題はありませんでしたし、chmodなどを設定する必要もありませんでした。