Использование git через cygwin на окнах 8
У меня есть предварительный просмотр windows 8 dev (не уверен, что это актуально, но у меня никогда не было этой проблемы с w7), и я пытаюсь клонировать git repo из github.
Проблема в том, что у моего ~ / .ssh / id_rsa есть 440 разрешений, и это должно быть 400. Я пробовал chmodding, но любые изменения в разрешениях пользователей отражаются в групповых разрешениях (например, chmod 600 приводит к 660 и т. Д. ). Это кажется постоянным во всех файлах всей файловой системы.
Я пробовал возиться с ACL, но безрезультатно (полный контроль над моим пользователем и отрицание того, что все привели к 000)
- Раздел Windows 8 для Windows был уничтожен. Как я могу это исправить?
- Как настроить беспроводную сеть как приватную, а не публичную?
- Измените начальное меню Windows 8 на Windows 7
- Windows 8 To Go развращает привод рабочего стола
- Какое программное обеспечение для виртуальных машин предпочтительнее для запуска предварительного просмотра Windows 8?
Вот несколько выводов, которые помогут:
$ 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 Release Preview до версии RTM?
- Сила установки Radeon HD 2100 на Windows 8
- Win + R работает как администратор в Windows 8
- Как отключить экран блокировки Windows 8?
- Комбинации клавиш Fn не работают на ноутбуке Asus на окнах 8
- Windows 8 через VirtualBox - приложения Metro не будут открываться при нажатии
- Как уменьшить размер системы Windows 8?
- Сделать GRUB 2 загрузочным Windows 8 безопасным режимом
Нет необходимости в пустой группе.
Во время установки cygwin все файлы не принадлежат ни одной группе. Вы можете проверить это, выполнив ls -al
. Вы увидите, что в файлах нет группы («нет»). Просто измените его на пользователей:
chgrp Users *
После этого вы можете chmod
что угодно.
На данный момент я нашел специфический для Cygwin хак, чтобы обойти это.
Укороченная версия:
Просто создайте новую группу оконных окон, используйте chgrp, чтобы изменить группу id_rsa на это, а затем запретить права на чтение и запись для группы.
Длинная версия:
Нажмите клавишу super и введите lusrmgr.msc . Используйте этот менеджер для создания пустой группы, называемой EMPTY_GROUP
Теперь нам нужно рассказать Cygwin об этой новой группе.
mkgroup > /etc/group
Затем мы обновляем группу id_rsa :
chgrp EMPTY_GROUP ~/.ssh/id_rsa
Наконец, найдите find id_rsa в Проводнике Windows и на вкладке «Безопасность» в «Свойствах» запретите права на чтение и запись, и вам должно быть хорошо идти.
Я не уверен, как Cygwin смог справиться с этим в 7, но не с 8, но проблема, похоже, связана с тем, что группа id_rsa является None, группа, которая всегда имеет полный доступ для чтения / записи.
Кроме того, похоже, это работает только для ssh.exe, который поставляется с Cygwin, поэтому, если вы хотите использовать ssh с git, перезапишите ssh.exe из bin в вашей git install с помощью одной из папки bin в вашей Cywgin install ,
Win 8 + Cygwin
Я нахожусь на Windows 8, 64bit. Выполнение следующего решения для меня:
## Start Cygwin shell cd .ssh chmod 600 key-file-name
В cygwin введите следующие команды:
-
Установите правильную группу в домашнюю папку:
chgrp -Rv HomeUsers /home
-
Задайте правильные разрешения для файлов идентификации ssh:
chmod 600 -Rv ~/.ssh/id*
NB: предыдущий принятый ответ устарел. Название группы – «HomeUsers», а не «Пользователи», не может комментировать.
Я хотел бы также прокомментировать этот вопрос. Я столкнулся с аналогичной проблемой на своем ПК с Windows 7, используя git через Cygwin.
При попытке перенаправить изменения из моего локального репозитория git в удаленный репозиторий (используя ssh и keypair для аутентификации) git бросил сообщение о том, что разрешения 0660 были слишком открыты для файла
~ / .ssh / id_rsa.
Конечно, ssh-agent отвергает этот открытый закрытый ключ.
Поэтому я пробовал вещи, упомянутые в этом потоке и других потоках, которые были связаны с собственностью и rwx-образцом файла и папкой ~ / .ssh
chgrp Users ~/.ssh/* chmod 400 ~/.ssh/id_rsa
Однако эта ошибка повторялась снова и снова.
По какой-то причине было необходимо убить процесс ssh-agent в cygwin и выполнить следующую команду в командной строке bourne (bash).
eval `ssh-agent -s`
Не забудьте добавить желаемый идентификатор к ssh-агенту, например
ssh-add ~/.ssh/id_rsa
Затем я повторил действительную команду push, например
git push origin master
И все сработало хорошо.
Чтобы продлить ответ Рой Дантона . Если вы установили Windows 8 поверх старой установки Windows, а ваш предыдущий каталог cygwin все еще находится в тактике, сначала вам нужно сделать несколько других вещей.
Во-первых, взять на себя ответственность за каталоги / файлы Cygwin
Будут некоторые учетные записи пользователей, связанные с каталогом и подкаталогами / файлами, которые выглядят примерно так: S-1-2-34-1234567890-1234567890-1234567890-123
Удалите их и получите право собственности на свою учетную запись пользователя.
- Доступ к
Properties
каталога cygwin - Нажмите «
Advanced
на вкладке «Security
» -
Change
владельца на себя. Вы можете ввести свое имя или соответствующий адрес электронной почты -
Remove
из списка неизвестных пользователей - Нажмите «
Enable Inheritance
- Установите флажок «Заменить все записи разрешений на дочерние объекты с помощью наследованных записей разрешения с этого объекта
- Нажмите «
OK
внизу, а затем «Yes
в диалоговом окне.
Затем, в Cygwin, измените группу пользователей всех файлов ключей
Из ответа Рой Дантона :
Во время установки cygwin все файлы не принадлежат ни одной группе. Вы можете проверить это, выполнив
ls -al
.
- Откройте Cygwin и перейдите в
.ssh
–cd ~/.ssh
- Запустите
chgrp Users *
– это позволит вам корректноchmod
файлы. - Наконец, запустите
chmod 400 *
. 600 также будет работать.
Тест, который нужно посмотреть, если он работает
Просто ssh на ваш сервер выбора. В моем случае это битбакет .
Хороший результат:
$ ssh [email protected] 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 [email protected] @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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).
- Id_rsa -> Щелкните правой кнопкой мыши -> Свойства -> Безопасность -> Изменить
- Удалите все группы и пользователей (не нажимайте OK или Apply)
- Добавить -> Введите свое текущее имя пользователя -> Проверить имена
- Разрешить «Полный контроль»
- Подать заявление
(Windows 10 Pro)