Використання git через cygwin на Windows 8


16

У мене є попередній перегляд Windows 8 Dev (не впевнений, що це актуально, але у мене не було таких клопотів на w7), і я намагаюся клонувати git repo з github.

Проблема полягає в тому, що мій ~ / .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.
Саймон Хартчер

"Я намагався возитися з ACL, але безрезультатно (повний контроль над моїм користувачем і заперечувати всіх привели до 000) " Так ls -lпоказує дозволи як 000( ----------) - але ви все ще можете читати файл, робити sshі git cloneскаржитися про це? Я припускаю, що sshне буду скаржитися на дозволи, які здаються занадто суворими. Швидкий погляд на вихідний код, як правило, підтверджує це, але я не перевіряв його.
Кіт Томпсон

Відповіді:


26

Немає необхідності в порожній групі.

Під час встановлення cygwin всі файли не належать до групи. Ви можете перевірити це, зробивши ls -al. Ви побачите, що жодна група ("немає") у файлах. Просто змініть його на Користувачів:

chgrp Users *

Після цього ви можете chmodвсе що завгодно.


chgrp Users *змінить лише всі файли та папки в $PWD. Щоб змінити всі підпапки / файли як wellas $ 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

Нарешті, перейдіть до пошуку id_rsa у Провіднику Windows, а на вкладці Безпека у Властивості забороняйте дозволи на читання / запис, і вам слід зайти.

Я не впевнений, як Cygwin зміг це впоратися в 7, але не в 8, але, здається, проблема випливає з групи файлу id_rsa, що не має групи, яка завжди має повний доступ для читання / запису.

Крім того, це, здається, працює лише для ssh.exe, що постачається з Cygwin, тому, якщо ви хочете використовувати, скажімо, ssh з git, перезапишіть ssh.exe з біна у вашому git встановіть з папки bin у вашій установці Cywgin .


2

Виграй 8 + Cygwin

Я в Windows 8, 64-бітний. Виконувати наступні рішення для мене:

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

1

У cygwin введіть ці команди:

  • Встановіть правильну групу в домашню папку:

    chgrp -Rv HomeUsers /home

  • Встановіть правильні дозволи для файлів посвідчень ssh:

    chmod 600 -Rv ~/.ssh/id*

Примітка: попередня прийнята відповідь застаріла. Назва групи - "HomeUsers", а не "Користувачі", поки що не може коментувати.


1

Я також хотів би прокоментувати це питання. У мене на комп’ютері з Windows 7 за допомогою git через Cygwin я зіткнувся з подібною проблемою.

Коли я намагався перенести зміни з мого локального сховища git до віддаленого сховища (використовуючи ssh та keypair для автентифікації), git перекинув повідомлення про те, що дозволи 0660 занадто відкриті для файлу

~ / .ssh / id_rsa.

Звичайно, нормально, щоб ssh-агент відхилив цей відкритий приватний ключ.

Тому я спробував речі, згадані в цій темі, та інші потоки, які стосувалися права власності та rwx-шаблону файлу та папки ~ / .ssh

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

Однак та сама помилка була кинута знову і знову.

Чомусь потрібно було вбити процес ssh-агента в cygwin і виконати наступну команду в оболонці bourne знову (bash).

eval `ssh-agent -s`

Не забудьте додати потрібну ідентичність до ssh-агента, наприклад

ssh-add ~/.ssh/id_rsa

Потім я повторив дійсну команду push, як

git push origin master

і все спрацювало добре.


0

Щоб продовжити відповідь Роя Дантона . Якщо ви встановили Windows 8 над старою установкою Windows, і ваш попередній каталог cygwin все ще знаходиться в такті, вам потрібно спочатку виконати кілька інших речей.

По-перше, візьміть у власність каталоги / файли Cygwin

Будуть деякі облікові записи користувачів, пов’язані з каталогом та підкаталогами / файлами, які виглядають приблизно так S-1-2-34-1234567890-1234567890-1234567890-123

Облікові записи користувачів

Видаліть ці дані та отримайте право власності на власний обліковий запис користувача.

  1. Отримайте доступ до Propertiesкаталогу cygwin
  2. Клацніть Advancedна Securityвкладці
  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 для Windows (не cygwin) я отримую chgrp Users * "C: /opscode/chef/embedded/bin/chgrp.exe": недійсна група `Користувачі '
Джонатан

0
  1. id_rsa -> Клацніть правою кнопкою миші -> Властивості -> Захист -> Редагувати
  2. Видаліть усі групи та користувачів (не натискайте ОК і не застосовувати)
  3. Додати -> Введіть своє поточне ім'я користувача -> Перевірити імена
  4. Дозволити "Повний контроль"
  5. Застосувати

(Windows 10 Pro)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.