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


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

это на windows

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

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

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

это дает мне 4 среды, чтобы попытаться использовать Git в:

  • Windows cmd подскажите
  • Powershell
  • Git Bash
  • программа

каким-то образом мне удалось попасть в положение, когда я пытаюсь клонировать репозиторий с помощью 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:usersben папка, которая используется msysgit. Я подозреваю, что cygwin работает, потому что.папка СШ находится в другом месте, но я не уверен почему

в 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 текст http://cdn.cloudfiles.mosso.com/c54102/app7962031255448924.jpg

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

23 237

23 ответа:

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

cd ~/.ssh
chmod 700 id_rsa

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

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

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

отредактировано: также только что нашел эту ссылку через Google -- исправление " предупреждение: незащищенный файл закрытого ключа!"на Linux хотя он нацелен на linux, это может помочь, так как мы говорим о разрешениях liunx и т. д.

есть ошибка с chmod cygwin, пожалуйста, обратитесь к:

https://superuser.com/questions/397288/using-cygwin-in-windows-8-chmod-600-does-not-work-as-expected

chgrp -Rv Users ~/.ssh/* 
chmod -vR 600 ~/.ssh/id_rsa

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

зайти в Мой Компьютер / правой кнопкой мыши / Свойства / Дополнительные параметры системы / Переменные среды и удалить переменная (возможно, как из системы, так и из пользовательской среды):

программа

в основном, его недостаток в mingw32 используется git Windows binary, видя все файлы 644 и все папки 755 всегда. Удаление переменной среды не изменяет это поведение, но оно, по-видимому, сообщает ssh.exe, чтобы игнорировать проблему. Если вы установите правильные разрешения на свой id_rsa через параметры безопасности explorers (на самом деле нет необходимости иметь там любого другого пользователя, кроме вашего собственного, а не "всех", а не "администраторов", а не "систему". никто. только вы), вы все равно будете в безопасности.

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

Я на 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 не позволит этого для закрытых ключей (как правило, хорошая политика на сервере).

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

  1. в проводнике Windows щелкните правой кнопкой мыши файл id_rsa и выберите Свойства
  2. выберите вкладку Безопасность и нажмите кнопку Редактировать...
  3. установите флажок запретить для всех групп, кроме администраторов
  4. повторите команду Git

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

- r--r----- 1 alex None 1766 Mar 8 13: 04 / home/alex/.ssh / id_rsa

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

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

тогда я мог бы успешно изменить разрешения с помощью chmod 400, и запустить ГИТ пуш.

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

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

chmod og-r *filename.pem*

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

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

щелкните правой кнопкой мыши файл > свойства > вкладка безопасность>кнопка Дополнительно>Изменить разрешения

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

Нажмите кнопку ОК и сохраните до завершения.

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

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

chmod 400 ~/.ssh/id_rsa

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

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

просто включает в себя перезапись mysys ssh.exe с вашим Cygwin ssh.exe

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

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

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

Я играю прямо сейчас с 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 SP2 на NTFS
  • пользователь: администратор
  • окружающая среда vars:
    • PLINK_PROTOCOL=ssh
    • HOME= / c / profiles / home

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

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

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

  1. установить cygwin.

  2. замените msysgit ssh.exe с ssh cygwin.исполняемый.

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

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

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

Я смог исправить это, сделав две вещи, хотя вам, возможно, не придется делать Шаг 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
Имя хоста heroku.com
Порт 22
Идентичности только да
IdentityFile ~/.ssh / id_heroku
TCPKeepAlive да
Пользователь brandon

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

  1. добавить ключ:
    heroku ключи: добавить ~/.ssh / id_heroku.паб

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

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

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

начните с создания резервной копии ваших ~/.каталог СШ.

введите следующее и ответьте "y" на вопрос, Хотите ли вы перезаписать существующие файлы.

ssh-keygen -t rsa

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

cat ~/.ssh/id_rsa.pub | pbcopy

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

Name: My new public key
Key: <PASTE>

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

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

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

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

chmod -Rf 700 ~/.ssh/

и повторите попытку.

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

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

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

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

после обновления моей установки 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

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

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

cd ~/.ssh
chmod 700 id_rsa.pub

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

У меня была та же проблема на Windows 10, где я пытался SSH в бродячий ящик. Это похоже на ошибку в старой версии 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. на вкладке" Advance "нажмите кнопку" Переменные среды..."
  3. в разделе системные переменные изменить "путь".
  4. выберите "C:\Program файлы\OpenSSH\bin" и "переместить вверх" так, чтобы он появился сверху.
  5. Нажмите кнопку ОК
  6. перезагрузите консоль так что могут применяться новые переменные среды.