Windows 8の開発プレビュー(関連性があるかどうかはわかりませんが、w7でこのような問題が発生したことはありません)マシンがあり、githubからgitリポジトリのクローンを作成しようとしています。
問題は、私の〜/ .ssh/id_rsaに440のアクセス許可があり、400にする必要があるということです。chmoddingを試みましたが、ユーザーのアクセス許可の変更はグループのアクセス許可に反映されます(つまり、chmod 600の結果は660になります)。 )。これは、ファイルシステム全体のどのファイルでも一定であるように見えます。
ACLをいじってみましたが、役に立ちませんでした(ユーザーを完全に制御し、全員を拒否すると000になりました)
役立つ出力がいくつかあります。
$ git clone [removed]
Cloning into [removed]...
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/john/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/john/.ssh/id_rsa
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None 411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None 407 Nov 30 18:43 known_hosts
$ chmod -v 400 ~/.ssh/id_rsa
mode of `/home/john/.ssh/id_rsa' changed from 0440 (r--r-----) to 0400 (r--------)
$ ll ~/.ssh
total 6
-r--r----- 1 john None 1675 Nov 30 19:15 id_rsa
-rw-rw---- 1 john None 411 Nov 30 19:15 id_rsa.pub
-rw-rw-r-- 1 john None 407 Nov 30 18:43 known_hosts
$ set | grep CYGWIN
CYGWIN='sbmntsec ntsec server ntea'
Msysgitか何かを使用できることはわかっていますが、単一の端末からすべてを実行できるようにしたいと思います
編集:Msysgitも同じ理由で機能しません
空のグループは必要ありません。
Cygwinのインストール中、すべてのファイルはどのグループにも属しません。これを確認するには、ls -al
。ファイルにグループがない(「none」)ことがわかります。それをユーザーに変更するだけです:
chgrp Users *
この後、好きなようにchmod
できます。
今のところ、これを回避するためのCygwin固有のハックを見つけました。
短縮版:
新しい空のWindowsグループを作成し、chgrpを使用してid_rsaのグループをこれに変更してから、グループの読み取り/書き込み権限を拒否するだけです。
ロングバージョン:
スーパーキーを押して、lusrmgr.mscと入力します。このマネージャを使用して、sayという空のグループを作成します EMPTY_GROUP
次に、この新しいグループについてCygwinに通知する必要があります。
mkgroup > /etc/group
次に、のグループを更新します id_rsa:
chgrp EMPTY_GROUP ~/.ssh/id_rsa
最後に、見つけに行きます id_rsa Windowsエクスプローラーの[プロパティ]の[セキュリティ]タブで、読み取り/書き込み権限を拒否します。これで問題ありません。
Cygwinが8ではなく7でこれをどのように処理できたかはわかりませんが、問題はid_rsaファイルのグループがNoneであり、常に完全な読み取り/書き込みアクセス権があるグループに起因するようです。
また、これはCygwinに付属のssh.exeでのみ機能するようです。したがって、たとえばsshをgitで使用する場合は、gitインストールのbinのssh.exeをCywginインストールのbinフォルダーのssh.exeで上書きします。 。
私はWindows 8、64ビットを使用しています。次のことを行うと、私にとっては解決します。
## Start Cygwin Shell
cd .ssh
chmod 600 key-file-name
Cygwinで、次のコマンドを入力します。
正しいグループをホームフォルダに設定します。
chgrp -Rv HomeUsers /home
SshIDファイルに正しいアクセス許可を設定します。
chmod 600 -Rv ~/.ssh/id*
注意:以前に受け入れられた回答は古くなっています。グループ名は「Users」ではなく「HomeUsers」で、まだコメントできません。
その問題についてもコメントしたいと思います。 Cygwinを介してgitを使用しているWindows7PCで同様の問題が発生しました。
ローカルのgitリポジトリからリモートリポジトリに変更をプッシュしようとすると(認証にsshとキーペアを使用)、gitはパーミッション66がファイルに対してオープンすぎたというメッセージをスローしました
〜/ .ssh/id_rsa。
もちろん、ssh-agentがこのオープンな秘密鍵を拒否しても問題ありません。
そこで、このスレッドと、ファイルと〜/ .sshフォルダーの所有権とrwxパターンに関連する他のスレッドで言及されていることを試しました。
chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa
ただし、同じエラーが何度もスローされました。
何らかの理由で、cygwinのssh-agentプロセスを強制終了し、ボーンアゲインシェル(bash)で次のコマンドを実行する必要がありました。
eval `ssh-agent -s`
目的のIDをssh-agentに追加することを忘れないでください。
ssh-add ~/.ssh/id_rsa
次に、次のような有効なプッシュコマンドを繰り返しました
git Push Origin master
そしてすべてがうまくいった。
(Windows 10 Pro)
拡張するには Roi Dantonの答え 。古いWindowsインストールの上にWindows8をインストールし、以前のcygwinディレクトリがまだ機能していない場合は、最初に他のいくつかのことを行う必要があります。
S-1-2-34-1234567890-1234567890-1234567890-123
のようなディレクトリおよびサブディレクトリ/ファイルに関連付けられたいくつかのユーザーアカウントがあります
これらを削除し、自分のユーザーアカウントで所有権を取得します。
Properties
にアクセスしますAdvanced
タブでSecurity
をクリックしますChange
所有者自身に。名または関連するメールアドレスを入力できますRemove
リストにある不明なユーザーEnable Inheritance
をクリックしますOK
をクリックしてから、ダイアログボックスにYes
をクリックします。から ロイダントンの答え :
Cygwinのインストール中、すべてのファイルはグループに属しません。これは、
ls -al
を実行することで確認できます。
.ssh
ディレクトリに移動します-cd ~/.ssh
chgrp Users *
を実行します-これにより、ファイルを適切にchmod
することができます。chmod 400 *
を実行します。 600も機能します。選択したサーバーにSSHで接続するだけです。私の場合、その Bitbucket です。
良い結果:
$ ssh [email protected]
PTY allocation request failed on channel 0
conq: logged in as simonhartcher.
You can use git or hg to connect to Bitbucket. Shell access is disabled.
Connection to bitbucket.org closed.
悪い結果:
$ ssh [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/home/Simon/.ssh/id_dsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/Simon/.ssh/id_dsa
Permission denied (publickey).