Разрешения закрытого ключа 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 ответа:
вы изменили разрешения на весь каталог, который я согласен с 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 (после большого разочарования):
- скопировать
c:\cygwin\bin\cyg*
(~50 файлов) кc:\Program Files\Git\bin\
- скопировать
c:\cygwin\bin\ssh.exe
доc:\Program Files\Git\bin\
(перезапись)создать файл
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"
(необязательно) использовать
ssh -v git@github
чтобы увидеть связь отлажена.- попробуйте нажать!
фон: общая проблема является сочетание этих двух:
- ошибка: mingw32 видит все файлы как 644 (Другие/читаемые группой), и ничто из того, что я пробовал в mingw32, cygwin или Windows, не могло это исправить.
- версия SSH mingw32 не позволит этого для закрытых ключей (как правило, хорошая политика на сервере).
для Windows 7 с помощью Git найдено здесь (он использует MinGW, а не Cygwin):
- в проводнике Windows щелкните правой кнопкой мыши файл id_rsa и выберите Свойства
- выберите вкладку Безопасность и нажмите кнопку Редактировать...
- установите флажок запретить для всех групп, кроме администраторов
- повторите команду 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
щелкните правой кнопкой мыши файл > свойства > вкладка безопасность>кнопка Дополнительно>Изменить разрешения
теперь удалите все, что на самом деле не ваше имя пользователя. Это включает в себя администраторов и системных пользователей. На этом этапе вы можете получить диалог о наследовании разрешений-выберите опция, которая не наследуется-так как мы только хотим изменить этот файл.
Нажмите кнопку ОК и сохраните до завершения.
Я боролся с этим в течение нескольких дней, потому что мои окна не изменят разрешения на файлы из командной строки. Таким образом, это также фактически сделано - вместо того, чтобы использовать захватывающие обходные пути, которые могут иметь странные последствия.
после того, как я недавно столкнулся с этой проблемой, и это один из лучших результатов 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, это сработало для меня:
установить cygwin.
замените msysgit ssh.exe с ssh cygwin.исполняемый.
используя cygwin bash, chmod 600 файл закрытого ключа, который был "id_rsa" для меня.
Если это все еще не работает, перейдите в Панель управления - > Свойства системы - > Дополнительно - > Переменные среды и добавьте следующую переменную среды. Затем повторите шаг 3.
Значение Переменной
CYGWIN sbmntsec
Я смог исправить это, сделав две вещи, хотя вам, возможно, не придется делать Шаг 1.
копировать из Cygwin ssh.exe и все cyg*.dll в каталог bin Git (это может быть не нужно, но это шаг, который я сделал, но это само по себе не исправило ситуацию)
выполните следующие действия: 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/
- добавить ключ:
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 я был запущен и запущен.
вы скопировали ключевой файл с другой машины?
Я только что создал
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. Что сработало для меня:
- установите последнюю версию OpenSSH из http://www.mls-software.com/opensshd.html
- где.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 является вторым в пути, поэтому он не будет выполняться.
изменить порядок:
- щелкните правой кнопкой мыши кнопку Windows - > настройки - > "редактировать системные переменные среды"
- на вкладке" Advance "нажмите кнопку" Переменные среды..."
- в разделе системные переменные изменить "путь".
- выберите "C:\Program файлы\OpenSSH\bin" и "переместить вверх" так, чтобы он появился сверху.
- Нажмите кнопку ОК
- перезагрузите консоль так что могут применяться новые переменные среды.