У меня есть предварительный просмотр 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 не работает по тем же причинам
источник
ls -l
разрешения отображаются как000
(----------
) - но вы все еще можете читать файл, делатьssh
иgit clone
жаловаться? об этом? Я полагаю, чтоssh
не буду жаловаться на слишком строгие разрешения. Быстрый взгляд на исходный код имеет тенденцию подтверждать это, но я не проверял это.Ответы:
Нет необходимости в пустой группе.
Во время установки cygwin все файлы не принадлежат ни к одной группе. Вы можете проверить это, сделав
ls -al
. Вы увидите, что в файлах нет группы («none»). Просто измените его на Users:После этого вы можете
chmod
все, что угодно.источник
chgrp Users *
изменятся только все файлы и папки в$PWD
. Чтобы изменить все подпапки / файлы, а также $ PWD, используйте параметр -R:chgrp -R users *
Я нашел специальный взлом Cygwin, чтобы обойти это сейчас.
Краткая версия:
просто создайте новую пустую группу окон, используйте chgrp, чтобы изменить группу id_rsa на эту, а затем запретите права на чтение / запись для группы.
Длинная версия:
нажмите супер ключ и введите lusrmgr.msc . Используйте этот менеджер, чтобы создать пустую группу с именем, скажем, EMPTY_GROUP
Теперь нам нужно рассказать Cygwin об этой новой группе.
Далее мы обновляем группу id_rsa :
Наконец, перейдите к поиску id_rsa в проводнике Windows и на вкладке «Безопасность» в «Свойствах» откажитесь от разрешений на чтение / запись, и все будет хорошо.
Я не уверен, как Cygwin смог справиться с этим в 7, но не в 8, но проблема, похоже, связана с тем, что группа файла id_rsa - None, группа, которая всегда имеет полный доступ для чтения / записи.
Кроме того, похоже, что это работает только для ssh.exe, поставляемого с Cygwin, поэтому, если вы хотите использовать, скажем, ssh с git, перезапишите ssh.exe из bin в вашей установке git на файл из папки bin в вашей установке Cywgin ,
источник
Win 8 + Cygwin
Я на Windows 8, 64bit. Делать следующее решает это для меня:
источник
В cygwin введите эти команды:
Установите правильную группу для домашней папки:
chgrp -Rv HomeUsers /home
Установите правильные разрешения для файлов идентификации ssh:
chmod 600 -Rv ~/.ssh/id*
Примечание: предыдущий принятый ответ устарел. Имя группы "HomeUsers", а не "Users", пока не может комментировать.
источник
Я также хотел бы прокомментировать этот вопрос. Я столкнулся с подобной проблемой на моем ПК с Windows 7, используя git через Cygwin.
При попытке отправить изменения из моего локального репозитория git в удаленный репозиторий (используя ssh и пару ключей для аутентификации), git выдал сообщение, что разрешения 0660 слишком открыты для файла
Конечно, ssh-agent может отклонить этот открытый закрытый ключ.
Итак, я попробовал вещи, упомянутые в этой теме, и в других темах, связанных с владельцем и шаблоном rwx файла и папки ~ / .ssh.
Тем не менее, одна и та же ошибка была брошена снова и снова.
По какой-то причине пришлось убить процесс ssh-agent в cygwin и выполнить следующую команду в оболочке bourne again (bash).
Не забудьте добавить желаемый идентификатор в ssh-agent, например:
Затем я повторил правильную команду толчка, как
и все работало хорошо.
источник
Чтобы расширить ответ Рой Дантон . Если вы установили Windows 8 поверх старой установки Windows, а предыдущий каталог cygwin все еще работает, вам сначала нужно будет сделать несколько других вещей.
Во-первых, возьмите на себя ответственность за каталоги / файлы Cygwin
Там будут некоторые учетные записи пользователей, связанные с каталогом и подкаталогами / файлами, которые выглядят примерно так
S-1-2-34-1234567890-1234567890-1234567890-123
Удалите их и станьте владельцем вашей учетной записи.
Properties
к каталогу cygwinAdvanced
наSecurity
вкладкуChange
владелец для себя. Вы можете ввести свое имя или связанный адрес электронной почтыRemove
любые неизвестные пользователи из спискаEnable Inheritance
OK
внизу и затемYes
в диалоговое окно.Затем в Cygwin измените группу пользователей всех ключевых файлов.
Из ответа Рой Дантон :
.ssh
каталог -cd ~/.ssh
chgrp Users *
- это позволит вамchmod
правильно файлы.chmod 400 *
. 600 тоже будет работать.Тест, чтобы увидеть, сработало ли это
Просто SSH на ваш сервер по выбору. В моем случае это его Bitbucket .
Хороший результат:
Плохой результат:
источник
chgrp Users *
«C: /opscode/chef/embedded/bin/chgrp.exe»: недопустимая группа «Пользователи»(Windows 10 Pro)
источник