Права доступа с закрытым ключом SSH с использованием Git GUI или ssh-keygen слишком открыты - PullRequest
241 голосов
/ 12 октября 2009

Недавно мне не удалось клонировать или отправить на 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

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

UPDATE:

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

Есть идеи о том, как я могу исправить эти разрешения?

Ответы [ 24 ]

0 голосов
/ 03 июля 2014

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

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

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

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

0 голосов
/ 26 июня 2014

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

chmod -Rf 700 ~/.ssh/

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

0 голосов
/ 06 сентября 2013

Если нет причины, по которой вы хотите сохранить эту пару закрытых / открытых ключей (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>

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

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

0 голосов
/ 27 февраля 2014

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

...