Права доступа с закрытым ключом SSH с использованием Git GUI или ssh-keygen слишком открыты

244

Недавно я не смог клонировать или нажать на github, и я пытаюсь найти основную причину.

Это на окнах

У меня есть cygwin + git, а также msysgit.

Msysgit был установлен со следующими параметрами:

  • OpenSSH
  • Использовать Git из командной строки Windows

Это дает мне 4 окружения, чтобы попытаться использовать git в:

  • Приглашение Windows cmd
  • Powershell
  • Git Bash
  • Cygwin

Каким-то образом мне удалось попасть в такое положение, когда при попытке клонировать репозиторий с помощью msysgit, cmd.exe или Powershell я получаю следующую ошибку:

> Initialized empty Git repository in
> C:/sandbox/SomeProject/.git/
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> @    WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions 0644 for
> '/c/Users/Ben/.ssh/id_rsa' are too
> open. It is recommended that your
> private key files are NOT accessible
> by others. This private key will be
> ignored. bad permissions: ignore key:
> /c/Users/Ben/.ssh/id_rsa Permission
> denied (publickey). fatal: The remote
> end hung up unexpectedly

Это использует папку .ssh в моей папке c: \ users \ ben \, которая используется msysgit. Я подозреваю, что Cygwin работает, потому что папка .ssh находится в другом месте, но я не уверен, почему

В Git Bash я проверяю разрешения:

$ ls -l -a ~/.ssh

Что дает мне:

drwxr-xr-x    2 Ben      Administ        0 Oct 12 13:09 .    
drwxr-xr-x   34 Ben      Administ     8192 Oct 12 13:15 ..    
-rw-r--r--    1 Ben      Administ     1743 Oct 12 12:36 id_rsa
-rw-r--r--    1 Ben      Administ      399 Oct 12 12:36 id_rsa.pub    
-rw-r--r--    1 Ben      Administ      407 Oct 12 13:09 known_hosts

Эти разрешения явно слишком расслаблены. Как они попали таким образом, я понятия не имею.

Я могу попытаться изменить их ...

$ chmod -v -R 600 ~/.ssh

что говорит мне:

mode of `.ssh' changed to 0600 (rw-------)
mode of `.ssh/id_rsa' changed to 0600 (rw-------)
mode of `.ssh/id_rsa.pub' changed to 0600 (rw-------)
mode of `.ssh/known_hosts' changed to 0600 (rw-------)

Но, похоже, не имеет никакого эффекта. Я все еще получаю ту же ошибку, и делаю

$ ls -l -a ~/.ssh

дает те же разрешения, что и раньше.

ОБНОВИТЬ:

Я попытался исправить разрешения для этих файлов в cygwin, и cygwin правильно сообщает о своих разрешениях, gitbash не: alt text http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

Любые идеи о том, как я могу действительно исправить эти разрешения?

Бен Шейрман
источник
1
Возможно, вы захотите сообщить нам, какую файловую систему использует C: \ Users \ Ben \. Похоже, что файловая система не поддерживает реальные разрешения, или сопоставления между оболочкой и файловой системой не работают должным образом. Можете ли вы изменить разрешения через списки управления доступом Windows?
Чен Леви
Я использую Windows 7. Я могу изменить разрешения на это, но какими они должны быть? Все документы github / ssh говорят, что вам нужен 0600, но я понятия не имею, что это значит в списках управления доступом Windows.
Бен Шейрман
2
Э-э ... немного здесь, но изменение директории на 600 - плохая идея. Каталоги (и исполняемые файлы) всегда на одну цифру выше (700 не 600, 755 не 644). Выполнение этого в каталоге сделает его недоступным для просмотра. См. Dartmouth.edu/~rc/help/faq/permissions.html для более подробных объяснений.
Марк Эмблинг
Вы против использования PuTTY?
Грег Бэкон
если это решит мою проблему, то нет, но мне любопытно узнать, почему эта установка не работает для меня.
Бен Шейрман

Ответы:

361

Вы изменили разрешения для всего каталога, что, я согласен, со Splash, является плохой идеей. Если вы помните, каковы исходные разрешения для каталога, я попытался бы установить их обратно, а затем сделать следующее

cd ~/.ssh
chmod 700 id_rsa

внутри папки .ssh. Это установит для файла id_rsa значение rwx (чтение, запись, выполнение) только для владельца (вас) и нулевой доступ для всех остальных.

Если вы не можете вспомнить, каковы исходные настройки, добавьте нового пользователя и создайте набор ключей SSH для этого пользователя, создав тем самым новую папку .ssh, которая будет иметь разрешения по умолчанию. Вы можете использовать эту новую папку .ssh в качестве справочной информации о разрешениях для сброса вашей папки .ssh и файлов в.

Если это не сработает, я попробую удалить msysgit, удалить ВСЕ папки .ssh на компьютере (просто для безопасности), затем переустановить msysgit с нужными настройками и попробовать начать заново (хотя я думаю, что вы сказали мне) Вы уже пробовали это).

Отредактировано: также только что нашел эту ссылку через Google - Исправление "ПРЕДУПРЕЖДЕНИЕ: НЕЗАКОННЫЙ ФАЙЛ ЧАСТНОГО КЛЮЧА!" в Linux Хотя он нацелен на linux, он может помочь, так как мы говорим о разрешениях liunx и тому подобном.

Коби
источник
2
Этот ответ особенно относится к использованию cygwin или msysgit (поскольку msysgit использует подмножество cygwin или, возможно, mingw32). Вопрос заключается в разрешении на файл. Git любит работать с (в основном) разрешениями linux (вероятно, побочным продуктом своей целевой аудитории). Известно, что использование git.exe в оболочке Winodws имеет проблемы, я бы посоветовал придерживаться msysgit. По крайней мере, пока GitSharp не заработает полностью.
Коби
2
Это не работает на Windows 8 и моей установке Cygwin от Jan'14, как после chmod 700, он показывает файл как rwxrwx ---. Групповые разрешения должны быть установлены на то, на что я установил пользовательские разрешения, и я не могу использовать свои ключи.
Дин Хиллер
1
@DeanHiller, разрешение 700 должно выглядеть так -rwx------. То, что вы показываете, не правильно, если вы правильно выполнили команду chmod.
Коби
5
@Koby Нет, это была ошибка с работой aroudn ... нужно использовать chgrp -R Users ~ / .ssh, а затем chmod теперь работает и на самом деле корректно меняет права доступа ..... известная ошибка, которую я наконец нашел на еще один пост.
Дин Хиллер
2
Я могу убедиться, что в GitBash для Windows есть какая-то ошибка, из-за которой либо нельзя установить правильные права доступа с помощью chmod, либо права доступа не читаются правильно. chmod 600 id_rsd; ls -l id_rs -> -rwx-r - r--
Charlweed
74

В cygwin's chmod есть ошибка, обратитесь к:

/superuser/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa
kittikun
источник
По какой-то причине сопоставление разрешений Windows с разрешениями, подобными cygwin / * nix, немного размыто. Несмотря на то, что я удалил разрешения всех других пользователей на стороне Windows, cygwin все же применил разрешения для меня, пользователя , к другой группе с именем None. (Я предполагаю, что это стандартная процедура, когда группа не была явно определена). Это изменение явной группы Usersпредположительно позволило cygwin разделять разрешения, и я мог бы наконец установить 600 вместо автоматического 660.
t-mart
3
Это действительно правильный ответ. Тот, за кого проголосовали как за правильный ответ - я думаю, что люди, которые проголосовали за это, были пользователями Linux и не осознавали, что он правильно выполнял команду. У меня была та же проблема с Cygwin сегодня. Спасибо!
Майкл
Перед применением этого решения, когда я использовал chmod 600git, я бы пожаловался, что мои разрешения остались 0660. Исправление владения группой заставит chown примениться корректно.
Гильерме Родригес
1
Я обновил Cygwin, и это сработало. Должно быть, они исправили ошибку.
Дункан Калверт
17

Для систем * nix очевидным решением является chmod 600 id_rsa решением ofc, но в Windows 7 мне пришлось некоторое время ударить головой о стену, но потом я нашел волшебное решение:

Перейдите в раздел «Мой компьютер» / «Щелкните правой кнопкой мыши» / «Свойства» / «Дополнительные параметры системы» / «Переменные среды» и УДАЛИТЕ переменную (возможно, из системной и пользовательской среды):

CYGWIN

По сути, это недостаток в mingw32, используемом бинарным git windows, видя все файлы 644 и все папки 755 всегда. Удаление переменной среды не меняет это поведение, но, по-видимому, говорит ssh.exe игнорировать проблему. Если вы устанавливаете надлежащие права доступа к своему id_rsa через настройки безопасности проводников (на самом деле нет необходимости иметь там другого пользователя, кроме вашего, не «всех», не «администраторов», не «системы». Никто. Только вы) , вы все равно будете в безопасности.

Теперь, почему mingw32, отличная от cygwin система, будет использовать любую переменную окружения CYGWIN, мне не понятно. Похоже, ошибка для меня.

Tuncay Göncüoğlu
источник
3
Это не сработало для меня. Я все еще получаю сообщение "НЕЗАБРАННЫЙ ФАЙЛ ЧАСТНОГО КЛЮЧА". Просто хотел, чтобы вы знали, если кто-то другой натолкнется на эту тему с похожими результатами.
Люк
Работал на меня. Это асинин, хотя. Я даже больше не использую Cygwin. Кроме того, как ты это понял?
гамма
13

Я на XP, и это позволило Git Bash общаться с Github (после большого разочарования):

  1. скопировать c:\cygwin\bin\cyg*(~ 50 файлов) вc:\Program Files\Git\bin\
  2. скопировать c:\cygwin\bin\ssh.exeв c:\Program Files\Git\bin\(перезапись)
  3. Создайте файл, c:\Documents and Settings\<username>\.ssh\configсодержащий:

    Host github.com
        User git
        Hostname github.com
        PreferredAuthentications publickey
        IdentityFile "/cygdrive/c/Documents and Settings/<username>/.ssh/id_rsa"
    
  4. (необязательно) Используйте, ssh -v git@githubчтобы увидеть отлаженное соединение.

  5. Попробуйте нажать!

Справочная информация: общая проблема представляет собой сочетание этих двух:

  • ОШИБКА: mingw32 видит все файлы как 644 (другие / для группового чтения), и ничто из того, что я пробовал в mingw32, cygwin или Windows, не могло это исправить.
  • SSH-версия mingw32 не позволяет использовать это для закрытых ключей (обычно это хорошая политика на сервере).
Стив Клэй
источник
Он не требует создания файла, c:\Documents and Settings\<username>\.ssh\configтак как вы заменили c:\Program Files\Git\bin\ssh.exe на c:\cygwin\bin\ssh.exe. Правильно ?
爱国者
Согласитесь с комментариями. Для gitolite я выполнил эти шаги, скопировав cygwin / bin / cyg * в мой каталог Git (PortableGit - или - Program Files / Git), и обнаружил, что могу затем использовать git из Git-Bash, но не cygwin bash. Добавление каталогов PortableGit и Cygwin bin в мой PATH также работало с небольшим успехом ... но все же мне пришлось переместить PortableGit / bin / ssh.exe {,. Bak}, чтобы он не использовался случайно (даже если это такой же, как c: /cygwin/bin/ssh.exe). По сути, ssh.exe нужно запускать из каталога cygwin из-за других зависимостей, которые не были скопированы.
Майкл
Хотя сейчас это работает для меня, следующей попыткой будет просто добавить Git и Cygwin в PATH и убрать из Git ssh.exe, чтобы использовать ssh.exe в cygwin (из каталога bin в cygwin).
Майкл
Добавьте LogLevel DEBUGв файл .ssh \ config, чтобы получить отладочный вывод процесса ssh.exe, запущенного git.exe.
knb
Спасибо - это решение сработало для меня! В частности, из c: \ cygwin \ bin \ я скопировал ssh.exe, cygcrypto-0.9.8.dll, cygwin1.dll, cygminires.dll и cygz.dll в C: \ Program Files \ Git \ bin \.
nexus-bytes
10

Для Windows 7 используется Git, найденный здесь (он использует MinGW, а не Cygwin):

  1. В проводнике Windows щелкните правой кнопкой мыши свой файл id_rsa и выберите Свойства
  2. Выберите вкладку «Безопасность» и нажмите «Изменить».
  3. Установите флажок Запретить рядом с Полное управление для всех групп, КРОМЕ Администраторов
  4. Повторите команду Git
Бретт Пеннингс
источник
1
Это было для меня, но теперь у меня есть новая проблема, что ssh не нравится мой пароль, любой пароль, который я даю в файле ключей.
Джейсон Саутвелл
7

Итак, вот как я на самом деле принудительно изменил свои файлы Windows в отношении самих разрешений на Win7: найдите свой ключ ssh в проводнике Windows: C: \ Users [your_user_name_here] .ssh \ id_rsa

Щелкните правой кнопкой мыши файл> Свойства> вкладка «Безопасность»> кнопка «Дополнительно»> «Изменить права доступа».

Теперь удалите всех, кто не является вашим именем пользователя. Это включает в себя администраторов и пользователей системы. На этом этапе вы можете получить диалог о наследовании разрешений - выберите опцию, которая НЕ наследует - так как мы хотим изменить только этот файл.

Нажмите OK и сохраните, пока не будет сделано.

Я боролся с этим в течение нескольких дней, потому что мои окна не будут изменять права доступа к файлам из командной строки. Таким образом, это также делается на самом деле - вместо использования захватывающих обходных путей, которые могут иметь странные последствия.

diannaL
источник
6

Изменение прав доступа к файлам из свойств, отключение наследования и запуск chmod 400 не работали для меня. Разрешения для моего файла закрытого ключа были:

-r - r ----- 1 alex Нет 1766 8 марта 13:04 /home/alex/.ssh/id_rsa

Потом я заметил, что группа была None, поэтому я просто побежал

chown alex: Администраторы ~ / .ssh / id_rsa

Тогда я мог бы успешно изменить разрешения с помощью chmod 400 и выполнить команду git push.

alex.m
источник
4

ДЛЯ ПОЛЬЗОВАТЕЛЕЙ MAC:

Измените настройки вашего файла пары ключей, набрав это в терминале:

chmod og-r *filename.pem*

(убедитесь, что вы находитесь в правильном каталоге или пути к имени файла в команде правильно).

Андрей
источник
3

Я решаю это работает:

chmod 400 ~/.ssh/id_rsa

Я надеюсь помочь. Удачи.

CristianOrellanaBak
источник
1
Изменение разрешений на 400, как упомянул Кристиан, было бы более безопасным.
Сильвестр
2

После недавнего изучения этой проблемы, и это был один из лучших результатов Google, я подумал, что смогу смириться с простой работой, описанной в обсуждении здесь: http://code.google.com/p/msysgit/issues/detail?id = 261 # c40

Просто включает перезапись mysys ssh.exe с помощью cygwin ssh.exe

chriskhan
источник
2

У меня была такая же проблема на Windows XP совсем недавно. Я попытался выполнить chmod 700 в моем файле ~ / .ssh / id_rsa, но он не сработал. Когда я посмотрел на разрешения с помощью ls -l в ~ / .ssh / id_rsa, я увидел, что мои эффективные разрешения все еще были 644.

Потом я вспомнил, что разрешения Windows также наследуют разрешения от папок, и папка все еще была открыта для всех. Решением может быть также установка разрешений для папки, но я думаю, что лучшим способом было бы сказать системе игнорировать наследование для этого файла. Это можно сделать, используя расширенную опцию на вкладке безопасности в свойствах файла и сняв флажок «наследовать от родительских прав ...»

Это может быть полезно для других с такой же проблемой.

daramarak
источник
1

Я сейчас играю с Git 1.6.5 и не могу повторить ваши настройки:

Administrator@WS2008 /k/git
$ ll ~/.ssh
total 8
drwxr-xr-x    2 Administ Administ     4096 Oct 13 22:04 ./
drwxr-xr-x    6 Administ Administ     4096 Oct  6 21:36 ../
-rw-r--r--    1 Administ Administ        0 Oct 13 22:04 c.txt
-rw-r--r--    1 Administ Administ      403 Sep 30 22:36 config_disabled
-rw-r--r--    1 Administ Administ      887 Aug 30 16:33 id_rsa
-rw-r--r--    1 Administ Administ      226 Aug 30 16:34 id_rsa.pub
-rw-r--r--    1 Administ Administ      843 Aug 30 16:32 id_rsa_putty.ppk
-rw-r--r--    1 Administ Administ      294 Aug 30 16:33 id_rsa_putty.pub
-rw-r--r--    1 Administ Administ     1626 Sep 30 22:49 known_hosts

Administrator@WS2008 /k/git
$ git clone git@github.com:alexandrul/gitbook.git
Initialized empty Git repository in k:/git/gitbook/.git/
remote: Counting objects: 1152, done.
remote: Compressing objects: 100% (625/625), done.
remote: Total 1152 (delta 438), reused 1056 (delta 383)s
Receiving objects: 100% (1152/1152), 1.31 MiB | 78 KiB/s, done.
Resolving deltas: 100% (438/438), done.

Administrator@WS2008 /k/git
$ ssh git@github.com
ERROR: Hi alexandrul! You've successfully authenticated, but GitHub does not pro
vide shell access
Connection to github.com closed.

$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007

chmod не изменяет права доступа к файлам для моих ключей.

Окружающая среда:

  • Windows Server 2008 с пакетом обновления 2 (SP2) в NTFS
  • пользователь: администратор
  • среда изменения:
    • PLINK_PROTOCOL = SSH
    • HOME = / с / профили / дома

Обновление: Git 1.6.5.1 тоже работает.

alexandrul
источник
интересный. Похоже, вы используете вариант замазки?
Бен Шейрман
1

Это особенно сложная проблема в Windows, где недостаточно просто правильно смоделировать файлы. Вы должны настроить свою среду.

На Windows это работало для меня:

  1. Установите Cygwin.

  2. Замените msysgit ssh.exe на cygwin's ssh.exe.

  3. Используя cygwin bash, chmod 600 - файл закрытого ключа, который для меня был "id_rsa".

  4. Если это все еще не работает, перейдите в Панель управления -> Свойства системы -> Дополнительно -> Переменные среды и добавьте следующую переменную среды. Затем повторите шаг 3.

    Значение переменной
    CYGWIN sbmntsec

Майкл Босворт
источник
1

Я смог исправить это, выполнив две вещи, хотя вам может не потребоваться выполнить шаг 1.

  1. скопируйте из cygwin ssh.exe и все файлы cyg * .dll в каталог bin Git (это может быть необязательно, но это шаг, который я предпринял, но это само по себе не помогло)

  2. выполните шаги из: http://zylstra.wordpress.com/2008/08/29/overcome-herokus-permission-denied-publickey-problem/

    Я добавил некоторые детали в мой файл ~ / .ssh / config:

Хост heroku.com
Hostname heroku.com
Порт 22
IdentitiesOnly да
IdentityFile ~ / .ssh / id_heroku
TCPKeepAlive да
Brandon Пользователь

Мне пришлось использовать User в качестве адреса электронной почты для heroku.com. Примечание: это означает, что вам нужно создать ключ, я следовал этому, чтобы создать ключ, и когда он запрашивает имя ключа, обязательно укажите id_heroku http: / /help.github.com/win-set-up-git/

  1. затем добавьте ключ:
    ключи героя: добавьте ~ / .ssh / id_heroku.pub
Кристи Хотни
источник
1

Для меня было важно обновить переменную среды CYGWIN с помощью: " tty nodosfilewarning ". Даже не нужно chmod ключ.

tohokami
источник
0

Не прямой ответ на основной вопрос, но на ваш вопрос о том, как работает папка cygwin ... Как правило, cygwin помещает все «ваши» файлы в эквивалент c: \ cygwin \ home \ username. Он обрабатывает эту папку для любых пользовательских настроек, а не для пользовательского каталога Windows.

J Wynia
источник
0

Если нет причины, по которой вы хотите сохранить эту пару закрытых / открытых ключей (id_rsa / id_rsa.pub) или не хотите биться головой о стену, я бы рекомендовал просто воссоздать их и обновить ваш открытый ключ на github.

Начните с создания резервной копии вашей директории ~ / .ssh.

Введите следующее и ответьте «y», хотите ли вы перезаписать существующие файлы.

ssh-keygen -t rsa

Скопируйте содержимое открытого ключа в буфер обмена. (Ниже описано, как это сделать на Mac).

cat ~/.ssh/id_rsa.pub | pbcopy

Зайдите в свой аккаунт на github и добавьте этот ключ.

Name: My new public key
Key: <PASTE>

Выйдите из вашего терминала и перезапустите новый.

Если вы получаете бессмысленные сообщения об ошибках, такие как «Введите свой пароль» для вашего открытого ключа, когда вы никогда его не вводите, рассмотрите эту методику «начать сначала». Как вы видите выше, это не сложно.

L3x
источник
0

Мне никогда не удавалось заставить Git работать полностью в Powershell. Но в оболочке git bash у меня не было проблем, связанных с разрешениями, и мне не нужно было устанавливать chmod и т. Д. После добавления ssh в Github я был запущен и работал.

Сэм Кенни
источник
0

Тип на терминале:

chmod -Rf 700 ~/.ssh/

И попробуй еще раз.

Жоау Паулу Серкал
источник
0

Вы скопировали файл ключа с другого компьютера?

Я просто создал id_rsaфайл на клиентском компьютере, а затем вставил нужный ключ. Нет проблем с разрешениями. Нечего устанавливать. Это просто сработало. Это также работает, если вы используете PuTTYgen для создания закрытого ключа.

Возможно, какая-то скрытая групповая проблема, если вы копируете ее с другого компьютера.

Протестировано на двух машинах с Windows 8.1. Использование Sublime Text 3 для копирования и вставки закрытого ключа. Использование Git Bash (Git-1.9.4-preview20140611).

PhilT
источник
0

После обновления установки Cygwin до версии около февраля 2015 года ( 1.7.34(0.285/5/3) 2015-02-04 12:14 x86_64 Cygwin) я неожиданно наткнулся на UNPROTECTED PRIVATE KEY FILEпредупреждение.

Я исправил эту проблему после запуска следующей команды:

setfacl -s u::rw-,g::---,o:--- ~/.ssh/id_rsa

( другой ответ на другой вопрос дает больше контекста)

Abdull
источник
0

Ответ @ koby не работает для меня, поэтому я делаю небольшое изменение.

cd ~/.ssh
chmod 700 id_rsa.pub

Это хорошо работает для меня на Mac.

Хан Пэнбо
источник
0

У меня была такая же проблема в Windows 10, где я пытался использовать SSH в Vagrant box. Это похоже на ошибку в старой версии OpenSSH. Что сработало для меня:

  1. Установите последнюю версию OpenSSH из http://www.mls-software.com/opensshd.html.
  2. где.exe ssh

(Обратите внимание на «.exe», если вы используете Powershell)

Вы можете увидеть что-то вроде:

C:\Windows\System32\OpenSSH\ssh.exe
C:\Program Files\OpenSSH\bin\ssh.exe
C:\opscode\chefdk\embedded\git\usr\bin\ssh.exe

Обратите внимание, что в приведенном выше примере последний OpenSSH занимает второе место в пути, поэтому он не будет выполняться.

Чтобы изменить порядок:

  1. Щелкните правой кнопкой мыши кнопку Windows -> Настройки -> «Изменить переменные среды системы»
  2. На вкладке «Дополнительно» нажмите «Переменные среды ...»
  3. Под Системными Переменными отредактируйте «Путь».
  4. Выберите «C: \ Program Files \ OpenSSH \ bin» и «Move Up», чтобы оно появилось вверху.
  5. Нажмите ОК
  6. Перезапустите консоль, чтобы применить новые переменные среды.
Джаспер Сити
источник
0

Моя система немного запуталась с bash / cygwin / git / msysgit / возможно-больше ...

chmodне имел никакого влияния на ключ или configфайл.

Тогда я решил подойти к нему из Windows, который работал.

  1. Щелкните правой кнопкой мыши файл, разрешение которого необходимо исправить.
  2. Выберите Properties.
  3. Выберите Securityвкладку.
  4. щелчок Advanced около основания.
  5. Нажмите Changeрядом с Ownerверхом.
  6. Введите «My-Awesome-Username» (очевидно, измените его на свое текущее имя пользователя Windows) и нажмите Check Names, затем OK.
  7. Под Permission entries:, выделите каждого пользователя, который не является "My-Awesome-Username", и выберите Remove. Повторяйте это, пока "My-Awesome-Username" не останется единственным.
  8. Выберите «My-Awesome-Username» и нажмите Editниже.
  9. Убедитесь, что Type:вверху установлено значение Allow, а затем установите флажок рядом с Full control.
  10. Хит OK, Apply, OK, OK.

  11. Попробуйте еще раз ...

Кажется, иногда mock-bash не может контролировать владельца файла. Это особенно странно, так как оно генерируется из скрипта mock-bash. Пойди разберись.

Jack_Hu
источник
0

Ни один из предложенных здесь обходных путей (chmod / chgrp / setfacl / windows perms) не работал для меня с msys64 на корпоративной виртуальной машине Windows 7. В конце концов я обошел проблему с помощью агента ssh с ключом, предоставленным на stdin. Добавление этого к моему .bash_profileделает его по умолчанию для моего логина:

eval $(ssh-agent -s)
cat ~/.ssh/id_rsa | ssh-add -k -

Теперь я могу делать git push and pull с помощью ssh пультов.

Энди Браун
источник