web-dev-qa-db-ja.com

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

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も同じ理由で機能しません

16
9point6

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

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

chgrp Users *

この後、好きなようにchmodできます。

26
Roi Danton

今のところ、これを回避するための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で上書きします。 。

4
Daniel Stiner

Win 8 + Cygwin

私はWindows 8、64ビットを使用しています。次のことを行うと、私にとっては解決します。

## Start Cygwin Shell
cd .ssh
chmod 600 key-file-name
2
gsbabil

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

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

    chgrp -Rv HomeUsers /home

  • SshIDファイルに正しいアクセス許可を設定します。

    chmod 600 -Rv ~/.ssh/id*

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

1
Julien Ricard

その問題についてもコメントしたいと思います。 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

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

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

(Windows 10 Pro)

0
optimiertes

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

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

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

User accounts

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

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

Windows Security Dialog Box

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

から ロイダントンの答え

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

  1. Cygwinを開き、.sshディレクトリに移動します-cd ~/.ssh
  2. chgrp Users *を実行します-これにより、ファイルを適切にchmodすることができます。
  3. 最後に、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).
0
Simon Hartcher