Windows 8'de git ile cygwin kullanma


16

Ben bir windows 8 dev önizleme var (ilgili olup olmadığından emin değilim, ama w7 bu güçlük asla vardı) makine ve github bir git repo klonlamaya çalışıyorum.

Sorun benim ~ / .ssh / id_rsa 440 izinleri vardır ve 400 olması gerekir. Ben chmodding denedim ama kullanıcı izinleri üzerinde herhangi bir değişiklik grup izinleri yansıtılır (yani chmod 600 660 sonuç, vb.) ). Bu, tüm dosya sistemindeki herhangi bir dosya boyunca sabit gibi görünmektedir.

ACL'lerle uğraşmayı denedim ama boşuna (kullanıcım üzerinde tam kontrol ve 000 ile sonuçlanan herkesi reddetmek)

işte size yardımcı olacak birkaç çıktı:

$ 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 falan kullanabileceğimin farkındayım, ama her şeyi tek bir terminalden yapmayı tercih ederim

Düzenleme: Msysgit aynı nedenlerle çalışmıyor


Burada da aynı sorun var. Windows 8 Tüketici Önizlemesi.
Simon Hartcher

"ACL'lerle uğraşmayı denedim ama boşuna (kullanıcım üzerinde tam kontrol ve 000 ile sonuçlanan herkesi reddetti) " Bu yüzden ls -lizinleri 000( ----------) olarak gösteriyor - ama yine de dosyayı okuyabiliyor ve yapabiliyor sshve git cloneşikayet edebiliyor musunuz? hakkında? sshÇok katı görünen izinlerden şikayet etmeyeceğini tahmin ediyorum . Kaynak koduna hızlı bir bakış, bunu onaylama eğilimindedir, ancak test etmedim.
Keith Thompson

Yanıtlar:


26

Boş bir gruba gerek yoktur.

Cygwin kurulumu sırasında tüm dosyalar hiçbir gruba ait değildir. Bunu bir ls -al. Dosyalarda hiçbir grup ("hiçbiri") olmadığını göreceksiniz. Sadece Kullanıcılar olarak değiştirin:

chgrp Users *

Bundan sonra chmodne istersen yapabilirsin .


chgrp Users *yalnızca içindeki tüm dosya ve klasörleri değiştirir $PWD. Tüm alt klasörleri / dosyaları wellas $ PWD olarak değiştirmek için -R seçeneğini kullanın:chgrp -R users *
adam

4

Şimdilik bunun için Cygwin'e özel bir kesmek buldum.

Kısa sürüm:
Yeni bir boş pencere grubu oluşturun, id_rsa grubunu bu şekilde değiştirmek için chgrp kullanın ve ardından grup için okuma / yazma izinlerini reddedin.

Uzun versiyon:
Süper tuşa basın ve lusrmgr.msc yazın . EMPTY_GROUP adında boş bir grup oluşturmak için bu yöneticiyi kullanın

Şimdi Cygwin'e bu yeni grubu anlatmamız gerekiyor.

mkgroup > /etc/group

Sonra id_rsa grubunu güncelliyoruz :

chgrp EMPTY_GROUP ~/.ssh/id_rsa

Son olarak, Windows Gezgini'nde id_rsa dosyasını bulun ve Özellikler'deki Güvenlik sekmesi altında okuma / yazma izinlerini reddedin ve gitmekte fayda var.

Cygwin nasıl 7 ama 8 değil, bu başardı emin değilim, ama sorun id_rsa dosya grubu Yok, her zaman tam okuma / yazma erişimi olan bir grup olmaktan kaynaklanıyor gibi görünüyor.

Ayrıca, bu sadece Cygwin ile birlikte gelen ssh.exe için çalışıyor gibi görünüyor, bu yüzden git ile ssh demek istiyorsanız, git kurulumunuzdaki bin ssh.exe dosyasının üzerine Cywgin kurulumunuzdaki bin klasöründen biriyle yazın .


2

8 + Cygwin kazan

Windows 8, 64bit kullanıyorum. Aşağıdakileri yapmak benim için çözer:

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

1

Cygwin'de şu komutları yazın:

  • Giriş grubuna doğru grubu ayarlayın:

    chgrp -Rv HomeUsers /home

  • Ssh kimlik dosyaları için doğru izinleri ayarlayın:

    chmod 600 -Rv ~/.ssh/id*

Not: bir önceki kabul edilen cevap güncel değil. Grup adı "HomeUsers", "Kullanıcılar" değil, henüz yorum yapamaz.


1

Bu konuda da yorum yapmak istiyorum. Windows 7 bilgisayarımda git üzerinden Cygwin kullanarak benzer bir sorunla karşılaştım.

Yerel git depomdaki değişiklikleri uzak bir depoya (kimlik doğrulama için ssh ve anahtar çifti kullanarak) aktarmaya çalışırken, git 0660 izinlerinin dosya için çok açık olduğunu belirten bir mesaj attı

~ / .Ssh / id_rsa.

Elbette ssh aracısının bu açık özel anahtarı reddetmesi sorun yaratmaz.

Bu nedenle, bu iş parçacığı ve dosya ve ~ / .ssh klasörünün sahiplik ve rwx-desen ile ilgili diğer iş parçacıkları belirtilen denedim

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

Ancak, aynı hata defalarca atıldı.

Bazı nedenlerden ötürü cygwin'de ssh-agent işlemini öldürmek ve bourne kabuğunda (bash) aşağıdaki komutu uygulamak gerekiyordu.

eval `ssh-agent -s`

Ssh-temsilcisine istenen kimliği eklemeyi unutmayın, örn.

ssh-add ~/.ssh/id_rsa

Sonra geçerli bir push komutunu tekrarladım.

git push origin master

ve her şey yolunda gitti.


0

Roi Danton'un cevabını uzatmak için . Windows 8'i eski Windows kurulumunuzun üzerine yüklediyseniz ve önceki cygwin dizininiz hala duruyorsa, önce birkaç şey daha yapmanız gerekir.

İlk olarak, Cygwin Dizinlerinin / Dosyalarının Sahipliğini Alın

Dizine ve aşağıdaki gibi görünen alt dizinlere / dosyalara ilişkin bazı kullanıcı hesapları olacaktır S-1-2-34-1234567890-1234567890-1234567890-123

Kullanıcı hesapları

Bunları kaldırın ve kendi kullanıcı hesabınızla sahip olun.

  1. PropertiesCygwin dizinine erişin
  2. Click Advancedon Securitysekmesi
  3. Changesahibi kendinize. Adınızı veya ilişkili e-posta adresinizi yazabilirsiniz
  4. Remove listeden bilinmeyen kullanıcılar
  5. Tıklayın Enable Inheritance
  6. `Tüm alt nesne izin girdilerini bu nesneden devralınabilen izin girdileri ile değiştir
  7. Click OKsonra altta ve Yesiletişim kutusuna.

Windows Güvenlik İletişim Kutusu

Ardından, Cygwin'de Tüm Anahtar Dosyaların Kullanıcı Grubunu Değiştirin

Gönderen Roi Danton'un cevap :

Cygwin kurulumu sırasında tüm dosyalar hiçbir gruba ait değildir. Bunu bir ls -al.

  1. Cygwin'i açın ve .sshdizine gidin -cd ~/.ssh
  2. Çalıştır chgrp Users *- bu chmod, dosyalara düzgün bir şekilde erişmenizi sağlar.
  3. Sonunda koş chmod 400 *. 600 de çalışacak.

Çalışıp çalışmadığını görmek için test edin

Sadece ssh seçim sunucunuza. Benim durumumda, bu Bitbucket .

İyi sonuç:

$ 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.

Kötü sonuç:

$ 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
Windows için OpenSSH (cygwin değil) ile chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": geçersiz grup `Kullanıcılar '
Jonathan

0
  1. id_rsa -> Sağ tıklayın -> Özellikler -> Güvenlik -> Düzenle
  2. Tüm grupları ve kullanıcıları kaldırın (Tamam veya Uygula tuşuna basmayın)
  3. Ekle -> Mevcut kullanıcı adınızı girin -> Adları Kontrol Et
  4. "Tam Denetim" e izin ver
  5. Uygulamak

(Windows 10 Pro)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.