Использование Git через Cygwin на Windows 8


16

У меня есть предварительный просмотр Windows 8 Dev (не уверен, что это актуально, но у меня никогда не было этой проблемы на w7), и я пытаюсь клонировать git-репозиторий из github.

Проблема в том, что у моего ~ / .ssh / id_rsa есть 440 разрешений, и оно должно быть 400. Я попытался изменить его, но любые изменения в разрешениях пользователя отражаются в разрешениях группы (т.е. 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. Вы увидите, что в файлах нет группы («none»). Просто измените его на Users:

chgrp Users *

После этого вы можете chmodвсе, что угодно.


chgrp Users *изменятся только все файлы и папки в $PWD. Чтобы изменить все подпапки / файлы, а также $ PWD, используйте параметр -R:chgrp -R users *
adam

4

Я нашел специальный взлом Cygwin, чтобы обойти это сейчас.

Краткая версия:
просто создайте новую пустую группу окон, используйте 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 - None, группа, которая всегда имеет полный доступ для чтения / записи.

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


2

Win 8 + Cygwin

Я на Windows 8, 64bit. Делать следующее решает это для меня:

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

1

В cygwin введите эти команды:

  • Установите правильную группу для домашней папки:

    chgrp -Rv HomeUsers /home

  • Установите правильные разрешения для файлов идентификации ssh:

    chmod 600 -Rv ~/.ssh/id*

Примечание: предыдущий принятый ответ устарел. Имя группы "HomeUsers", а не "Users", пока не может комментировать.


1

Я также хотел бы прокомментировать этот вопрос. Я столкнулся с подобной проблемой на моем ПК с Windows 7, используя git через Cygwin.

При попытке отправить изменения из моего локального репозитория git в удаленный репозиторий (используя ssh и пару ключей для аутентификации), git выдал сообщение, что разрешения 0660 слишком открыты для файла

~ / .Ssh / id_rsa.

Конечно, ssh-agent может отклонить этот открытый закрытый ключ.

Итак, я попробовал вещи, упомянутые в этой теме, и в других темах, связанных с владельцем и шаблоном rwx файла и папки ~ / .ssh.

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

Тем не менее, одна и та же ошибка была брошена снова и снова.

По какой-то причине пришлось убить процесс ssh-agent в cygwin и выполнить следующую команду в оболочке bourne again (bash).

eval `ssh-agent -s`

Не забудьте добавить желаемый идентификатор в ssh-agent, например:

ssh-add ~/.ssh/id_rsa

Затем я повторил правильную команду толчка, как

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. Удалить все группы и пользователей (не нажимайте OK или Применить)
  3. Добавить -> Введите ваше текущее имя пользователя -> Проверить имена
  4. Разрешить "Полный контроль"
  5. Подать заявление

(Windows 10 Pro)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.