Windows 8でcygwinを使用してgitを使用する


16

私は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は同じ理由で動作しません


ここで同じ問題。Windows 8 Consumer Preview。
サイモンハートチャー

「私はACLのをいじってみましたが、無駄に(私のユーザーを完全に制御し、誰もが000になった拒否)しました」だから、ls -lなどのショーの権限は000----------) -しかし、あなたはまだファイルを読み、行うことができますsshし、git clone文句を言いますそれについて?ssh許可が厳しすぎると思われることに文句を言わないだろうと思います。ソースコードをざっと見てみると、これを確認する傾向がありますが、私はテストしていません。
キーストンプソン

回答:


26

空のグループは必要ありません。

cygwinのインストール中、すべてのファイルはグループに属しません。これを確認するには、を実行しls -alます。ファイルにグループ(「なし」)がないことがわかります。ユーザーに変更するだけです:

chgrp Users *

この後、chmod何でも好きなことができます。


chgrp Users *内のすべてのファイルとフォルダのみを変更します$PWD。すべてのサブフォルダー/ファイルおよび$ PWDを変更するには、-Rオプションを使用しますchgrp -R users *
。– adam

4

今のところ、これを回避するためのCygwin固有のハックを見つけました。

短いバージョン:
新しい空のWindowsグループを作成し、chgrpを使用してid_rsaのグループをこれに変更し、グループの読み取り/書き込み権限を拒否します。

ロングバージョン:
スーパーキーを押してlusrmgr.mscと入力します。このマネージャーを使用して、たとえばEMPTY_GROUPという空のグループを作成します

次に、この新しいグループについてCygwinに伝える必要があります。

mkgroup > /etc/group

次に、id_rsaのグループを更新します

chgrp EMPTY_GROUP ~/.ssh/id_rsa

最後に、Windowsエクスプローラーでid_rsaを検索し、[プロパティ]の[セキュリティ]タブで読み取り/書き込み権限を拒否します。これで準備完了です。

Cygwinがどのように7でこれを処理できるかはわかりませんが、8ではありませんが、問題はid_rsaファイルのグループがNoneであり、常に完全な読み取り/書き込みアクセスがあるグループに起因するようです。

また、これはCygwinに付属のssh.exeでのみ機能するようです。したがって、gitでsay sshを使用する場合は、gitインストールのbinのssh.exeをCywginインストールのbinフォルダーのssh.exeで上書きします。 。


2

勝利8 + Cygwin

私はWindows 8、64ビット版です。次のことを行うことで解決できます。

## Start Cygwin shell
cd .ssh
chmod 600 key-file-name

1

cygwinで、次のコマンドを入力します。

  • 正しいグループをホームフォルダーに設定します。

    chgrp -Rv HomeUsers /home

  • ssh IDファイルに正しいアクセス権を設定します。

    chmod 600 -Rv ~/.ssh/id*

注:以前に受け入れられた回答は古くなっています。グループ名は「HomeUsers」であり、「Users」ではなく、まだコメントできません。


1

その問題についてもコメントしたいと思います。Cygwinからgitを使用して、Windows 7 PCで同様の問題が発生しました。

ローカルgitリポジトリからリモートリポジトリに変更をプッシュしようとすると(認証にsshとキーペアを使用して)、gitはアクセス許可0660がファイルに対して開かれすぎているというメッセージをスローしました

〜/ .ssh / id_rsa。

もちろん、ssh-agentがこのオープンプライベートキーを拒否してもかまいません。

そこで、このスレッドで言及されていること、およびファイルと〜/ .sshフォルダーの所有権とrwxパターンに関連する他のスレッドを試しました。

chgrp Users ~/.ssh/*
chmod 400 ~/.ssh/id_rsa

ただし、同じエラーが何度もスローされました。

何らかの理由で、cygwinでssh-agentプロセスを強制終了し、bourne againシェル(bash)で次のコマンドを実行する必要がありました。

eval `ssh-agent -s`

ssh-agentに希望のIDを追加することを忘れないでください。例えば

ssh-add ~/.ssh/id_rsa

その後、次のような有効なプッシュコマンドを繰り返しました

git push origin master

そしてすべてがうまくいきました。


0

Roi Dantonの答えを拡張する。古いWindowsインストールの上にWindows 8をインストールしていて、以前のcygwinディレクトリがまだ正常な場合は、最初に他のいくつかのことを行う必要があります。

最初に、Cygwinディレクトリ/ファイルの所有権を取得します

次のようなディレクトリとサブディレクトリ/ファイルに関連付けられたユーザーアカウントがいくつかあります S-1-2-34-1234567890-1234567890-1234567890-123

ユーザーアカウント

これらを削除して、自分のユーザーアカウントで所有権を取得します。

  1. にアクセスする Propertiescygwinディレクトリの
  2. タブをクリックAdvancedSecurityます
  3. Change自分の所有者。名または関連するメールアドレスを入力できます
  4. Remove リストから不明なユーザー
  5. クリック Enable Inheritance
  6. 「すべての子オブジェクトのアクセス許可エントリを、このオブジェクトの継承可能なアクセス許可エントリに置き換えます」をチェックします
  7. OK下部をクリックし、Yesダイアログボックスをクリックします。

Windowsセキュリティダイアログボックス

次に、Cygwinで、すべてのキーファイルのユーザーグループを変更します。

ロワダントンの答え

cygwinのインストール中、すべてのファイルはグループに属しません。これを確認するには、を実行しls -alます。

  1. Cygwinを開き、.sshディレクトリに移動します-cd ~/.ssh
  2. 実行chgrp Users *-これによりchmod、ファイルに適切にアクセスできます。
  3. 最後に、実行しchmod 400 *ます。600でも動作します。

動作するかどうかをテストする

選択したサーバーにsshするだけです。私の場合、そのBitbucketです。

良い結果:

$ ssh hg@bitbucket.org
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 hg@bitbucket.org
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).

2
OpenSSH for Windows(cygwinではない)を使用すると、 chgrp Users * 「C:/opscode/chef/embedded/bin/chgrp.exe」が表示されます:無効なグループ「ユーザー」
ジョナサン

0
  1. id_rsa->右クリック->プロパティ->セキュリティ->編集
  2. すべてのグループとユーザーを削除します([OK]または[適用]を押さないでください)
  3. 追加->現在のユーザー名を入力->名前を確認
  4. 「フルコントロール」を許可する
  5. 適用する

(Windows 10 Pro)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.