Mam podgląd dewelopera systemu Windows 8 (nie jestem pewien, czy to jest istotne, ale nigdy nie miałem tego problemu na w7) i próbuję sklonować repozytorium git z github.
Problem polega na tym, że mój ~ / .ssh / id_rsa ma 440 uprawnień i musi wynosić 400. Próbowałem go chmodding, ale wszelkie zmiany w uprawnieniach użytkownika znajdują odzwierciedlenie w uprawnieniach grupy (tj. Chmod 600 daje wyniki w 660 itp. ). Wydaje się, że jest stały w każdym pliku w całym systemie plików.
Próbowałem zadzierać z listami ACL, ale bezskutecznie (pełna kontrola nad moim użytkownikiem i odmawianie wszystkim skutkowało liczbą 000)
oto kilka wyników, które mogą pomóc:
$ 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'
Zdaję sobie sprawę, że mógłbym użyć msysgit lub czegoś takiego, ale wolałbym móc wszystko robić z jednego terminala
Edycja: Msysgit nie działa z tych samych powodów
źródło
ls -l
pokazuje uprawnienia jako000
(----------
) - ale czy nadal możesz czytać plik, robićssh
igit clone
narzekać o tym? Spekuluję, żessh
nie będzie narzekać, że uprawnienia wydają się zbyt surowe. Szybkie spojrzenie na kod źródłowy zwykle to potwierdza, ale nie przetestowałem tego.Odpowiedzi:
Nie ma potrzeby tworzenia pustej grupy.
Podczas instalacji cygwin wszystkie pliki nie należą do żadnej grupy. Możesz to sprawdzić, wykonując
ls -al
. Zobaczysz, że w plikach nie ma żadnej grupy („brak”). Po prostu zmień na Użytkownicy:Następnie możesz zrobić,
chmod
co chcesz.źródło
chgrp Users *
zmieni tylko wszystkie pliki i foldery w$PWD
. Aby zmienić wszystkie podfoldery / pliki, a także $ PWD, użyj opcji -R:chgrp -R users *
Znalazłem hack specyficzny dla Cygwina, aby obejść ten problem.
Krótka wersja: po
prostu utwórz nową pustą grupę okien, użyj chgrp, aby zmienić grupę id_rsa na to, a następnie odmów uprawnień do odczytu / zapisu dla grupy.
Wersja długa:
naciśnij klawisz super i wpisz lusrmgr.msc . Użyj tego menedżera, aby utworzyć pustą grupę o nazwie powiedzmy EMPTY_GROUP
Teraz musimy powiedzieć Cygwinowi o tej nowej grupie.
Następnie aktualizujemy grupę id_rsa :
Na koniec znajdź id_rsa w Eksploratorze Windows i na karcie Zabezpieczenia we Właściwościach, odmawiaj uprawnień do odczytu / zapisu, i powinieneś być .
Nie jestem pewien, jak Cygwin był w stanie poradzić sobie z tym w 7, ale nie w 8, ale problem wydaje się wynikać z tego, że grupa pliku id_rsa to None, grupa, która zawsze ma pełny dostęp do odczytu / zapisu.
Ponadto wydaje się, że działa to tylko w przypadku ssh.exe, który jest dostarczany z Cygwin, więc jeśli chcesz użyć powiedzmy ssh z git, zastąp ssh.exe z bin w instalacji git z tym z folderu bin w instalacji Cywgin .
źródło
Wygraj 8 + Cygwin
Korzystam z systemu Windows 8, 64-bitowego. Wykonanie następujących czynności rozwiązuje to dla mnie:
źródło
W cygwin wpisz następujące polecenia:
Ustaw prawidłową grupę w folderze domowym:
chgrp -Rv HomeUsers /home
Ustaw odpowiednie uprawnienia dla plików tożsamości ssh:
chmod 600 -Rv ~/.ssh/id*
Uwaga: poprzednia zaakceptowana odpowiedź jest nieaktualna. Nazwa grupy to „Użytkownicy domowi”, a nie „Użytkownicy”, nie można jeszcze komentować.
źródło
Chciałbym również skomentować tę kwestię. Podobny problem spotkałem na moim komputerze z systemem Windows 7, używając git przez Cygwin.
Podczas próby wypchnięcia zmian z mojego lokalnego repozytorium git do zdalnego repozytorium (używając ssh i pary kluczy do uwierzytelnienia), git rzucił wiadomość, że uprawnienia 0660 były zbyt otwarte dla pliku
Oczywiście ssh-agent może odrzucić ten otwarty klucz prywatny.
Próbowałem więc rzeczy wymienionych w tym wątku i innych wątkach, które były związane z własnością i wzorcem rwx pliku i folderu ~ / .ssh
Jednak ten sam błąd był zgłaszany w kółko.
Z jakiegoś powodu konieczne było zabicie procesu ssh-agent w cygwin i ponowne wykonanie następującego polecenia w powłoce Bourne'a (bash).
Nie zapomnij dodać żądanej tożsamości do agenta ssh, np
Następnie powtórzyłem prawidłowe polecenie push, takie jak
i wszystko działało dobrze.
źródło
Aby rozszerzyć odpowiedź Roi Dantona . Jeśli zainstalowałeś Windows 8 na starej instalacji Windows, a twój poprzedni katalog cygwin nadal jest w toku, najpierw musisz zrobić kilka innych rzeczy.
Po pierwsze, przejmij na własność katalogi / pliki Cygwin
Będzie kilka kont użytkowników powiązanych z katalogiem i podkatalogami / plikami, które wyglądają podobnie
S-1-2-34-1234567890-1234567890-1234567890-123
Usuń je i przejmij własność na własne konto użytkownika.
Properties
katalogu cygwinAdvanced
naSecurity
karcieChange
właściciel do siebie. Możesz wpisać swoje imię lub powiązany adres e-mailRemove
nieznani użytkownicy z listyEnable Inheritance
OK
na dole, a następnieYes
do okna dialogowego.Następnie w Cygwin zmień grupę użytkowników wszystkich kluczowych plików
Z odpowiedzi Roi Dantona :
.ssh
katalogu -cd ~/.ssh
chgrp Users *
- pozwoli ci tochmod
poprawnie na pliki.chmod 400 *
. 600 również będzie działać.Sprawdź, czy zadziałało
Po prostu ssh na wybrany serwer. W moim przypadku jest to Bitbucket .
Dobry wynik:
Zły wynik:
źródło
chgrp Users *
„C: /opscode/chef/embedded/bin/chgrp.exe”: nieprawidłowa grupa „Użytkownicy”(Windows 10 Pro)
źródło