16

У меня есть предварительный просмотр Windows 8 Dev (не уверен, что это актуально, но у меня никогда не было этой проблемы на w7), и я пытаюсь клонировать git-репозиторий из 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 не работает либо по тем же причинам

7 ответов7

26

Нет необходимости в пустой группе.

Во время установки cygwin все файлы не принадлежат ни к одной группе. Вы можете проверить это, выполнив команду ls -al . Вы увидите, что в файлах нет группы ("none"). Просто измените его на Users:

chgrp Users *

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

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

(Windows 10 Pro)

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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .