Вопрос: Как сообщить Git для Windows, где можно найти свой закрытый ключ RSA?


Моя настройка GIT отлично работает в Linux, но когда я пытаюсь настроить вещи под Windows (используя Git для Windows и TortoiseGit), я не знаю, где разместить свой закрытый ключ ssh (или, что еще лучше, как сказать ssh, где он расположен). Я использую стандартный параметр ssh.exe во время установки Git для Windows. Настройка выполняется нормально, если я разрешаю аутентификацию паролем (вместо rsa) на сервере.


452
2017-10-25 16:45


Источник


У меня такая же проблема, я могу сделать ssh в своем dev-блоке, используя открытый ключ как «root», используя программу «Git Bash», установленную с помощью «Git For Windows», но я не могу войти в систему как «git» с моим хотя я скопировал файл «authorized_keys» из моего «root» в мой «git» и правильно установил владельцы и разрешения. Почему я не могу войти в систему как «git», когда «root» работает с тем же самым файлом «authorized_keys». Вместо этого для «git» он передает все закрытые ключи, которые точно такие же, что и «root» и запрашивают пароль. Кстати, это сервер Centos 5.5. - Jarrod Roberson
@fuzzy lollipop: У вас есть права на файл authorized_keys пользователя git? Он должен быть chmod 600 и должен принадлежать пользователю git. Если он принадлежит пользователю root, он не будет работать - Dan McClain
да, все файлы и каталоги являются правильными владельцами и разрешениями - Jarrod Roberson


Ответы:


Для Гит Баш

Если вы используете msysgit (я предполагаю, что вы) и хотите запустить Git Bash (я рекомендую его по TortoiseGit, но теперь я наклоняюсь к CLI больше, чем GUI), вам нужно выяснить, что ваш домашний каталог для Git Bash, запустив его, затем введите pwd (На Win7 это будет что-то вроде C:\Users\phsr Я думаю). Пока вы находитесь в git bash, вы должны mkdir .ssh,

После того, как у вас есть домашний каталог и папка .ssh, вы хотите открыть PuTTYgen и открыть файл (.ppk), который вы создали ранее. Когда ваш ключ открыт, вы хотите выбрать Conversions -> Export OpenSSH key и сохранить его в HOME\.ssh\id_rsa, После того, как у вас есть ключ в этом месте, Git bash узнает ключ и использует его.

Примечание. Комментарии показывают, что это не работает во всех случаях. Возможно, вам придется скопировать ключ OpenSSH Program Files\Git\.ssh\id_rsa (или Program Files (x86)\Git\.ssh\id_rsa).

Для TortoiseGit

При использовании TortoiseGit вам необходимо установить ключ SSH через направления стрельбы, Вам нужно сделать это для каждого репозитория, с которым вы используете TortoiseGit, с


443
2017-11-05 17:18



Инструкции timy для tortoisegit не будут работать до тех пор, пока у вас не будет репозитория (поскольку параметр конфигурации «удаленный» не отображается, если вы не выполняете репо), и вы, вероятно, не сможете получить репозиторий в первую очередь, t аутентифицировать себя, чтобы клонировать от источника. Tricky! - Kylotan
С GitBash я обнаружил, что мне пришлось скопировать мои ~/.ssh/id_rsa файл для Program Files\Git\.ssh\id_rsa - что было немного запутанным, но теперь IntelliJ и Windows cmd могут нажать на git-репозитории, которые используют проверку подлинности ключа. - JP.
Точно так же. Я только что установил git-for-windows, я запускаю его из cmd.exe. Мне нужно было поместить файлы id_rsa а также id_rsa.pub в c:\program files (x86)\Git\.ssh , .ssh dir уже присутствовал. Спасибо, JP. - Cheeso
Второй абзац был золотым. :) - Bjørn
@Damon: Это должно быть id_rsa без расширения. Это имя файла, это не каталог - Dan McClain


Используя встроенный SSH-клиент, поставляемый с Git для Windows, вам необходимо настроить переменную среды HOME, чтобы клиент Git SSH мог найти ключ.

Например, на Виндоус виста установки, это будет сделано путем выдачи setx HOME c:\Users\admin\ в командной строке.

Сделал мой день и исправил проблему с Git при условии, что ваш закрытый ключ не защищен паролем. Если вы хотите использовать ssh-agent, вы можете запустить ssh-agent cmd.exe (хотя я этого никогда не делал) и ssh-add, как обычно.

Обратите внимание, что все инструменты Git / SSH должны запускаться из cmd.exe, чтобы не мерцать окно.

Если это не сработает правильно, использование plink может быть достигнуто путем настройки GIT_SSH, Обратитесь ко всем учебным пособиям svn + ssh, это в основном та же самая сантехника, которую вам нужно настроить.


98
2017-11-05 18:24



Это то, что я искал, так как я пытаюсь использовать командную строку Windows, а не git bash. - John Ruiz
Приятно, легко исправить, но с этим было бы трудно разобраться! - thaddeusmt
Важно также иметь пробелы между HOME = и c: \ ... Решение Oct сделало трюк для меня. :-) - Lutz
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` вместо этого. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


Вы можете указать Key Location for Tortoisegit следующим образом:

  • Откройте окно проводника.
  • Откройте контекстное меню и выберите TortoiseGit > Settings
  • В открывшемся окне Перейдите к Git > Remote
  • Задайте путь к ключу Putty в соответствующем поле ввода.

Снимок экрана ниже:

enter image description here


48
2017-11-05 14:07



Кроме того, если вам нужно преобразовать свой секретный ключ в формат .ppk из другого формата, вы можете следовать ЭТО - Tariq M Nasim
Это сработало для меня. - Maxim Eliseev
Git> Remote появляется только после того, как вы успешно клонировали репозиторий. - Steve Pitchers
Гораздо проще решить все правильные настройки в git (используя openSSH), а затем сказать TortoiseGit использовать ssh.exe, используемый git. Видеть stackoverflow.com/a/33328628/318317 Таким образом, вам нужно только это исправить. - Daniel Rose


Ни один из ответов выше не работал для меня. Вот что сработало для меня в конце. На самом деле это довольно просто, если вы знаете, что вводить. Он не нуждается в шпаклере.

  • откройте приглашение git bash
  • type 'ssh-keygen'
    • принять местоположение по умолчанию
    • выбрать пустую кодовую фразу (так что просто нажмите «войти» во все вопросы »)
  • теперь скопируйте на свой сервер, например: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Это бит на вашем собственном компьютере. Теперь ssh на целевой сервер, затем выполните

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Это оно! Все готово! Из git bash выполните следующие действия:

ssh someuser@someserver.com ls

Если он перечисляет файлы в вашем домашнем каталоге на сервере git, то все готово!

Изменить: для github у вас нет доступа к оболочке на свой сервер, но вы можете загрузить ключ с помощью своего веб-сайта, поэтому для бит «теперь скопируйте на свой сервер» выполните:

  • в git bash введите «cat ~ / .ssh / id_rsa.pub», выберите результат и скопируйте его в буфер обмена
  • На веб-сайте github перейдите в «Настройки учетной записи», «ssh keys», нажмите «Добавить ssh-ключ» и вставьте ключ

45
2018-04-25 01:32



Не создавайте ключи без кодовых фраз. Это похоже на ввод вашего пароля в текстовый файл, за исключением того, что всем известно местоположение по умолчанию для закрытых ключей. - GregB
Вы отвечаете на неправильный вопрос. Q - это то, как указать на существующий закрытый ключ. - Orangutech
@GregB, я смотрю на это так: любой сервер, для которого я создаю ключ без пароля, столь же безопасен, как и мой ноутбук, это расширение периметра безопасности моего ноутбука. На самом деле, даже не потому, что мой домашний каталог зашифрован ;-) Таким образом, он, как мне кажется, столь же безопасен, как и зашифрованный домашний раздел на моем ноутбуке, что является «хорошим» для обеспечения доступа к github. (что может отличаться от вашего мнения, конечно!) - Hugh Perkins
@GregB Не падайте в паранойю! :] Уверен, что использование защищенных паролем ключей намного безопаснее, чем использование без пароля, но утверждая, что пароль без пароля так же легко сломать, как сохранение паролей в текстовом файле является очевидным ложным. Я видел много руководств, которые побуждают пользователей использовать защищенные паролем ключи, но я никогда не видел никаких утверждений, что использование их без паролей небезопасно. Плюс: некоторые системы не поддерживают решения для запоминания пароля ключа, введенного пользователями и запрашивают его, каждый раз, когда используется ключ. Что делает использование SSH-ключей бессмысленным в этой ситуации. - trejder
Ради разговора, который отклонился от исходного вопроса, SSH-ключи, безусловно, более криптографически безопасны, чем пароли, но эта безопасность подвергается риску, не шифруя ваши SSH-ключи. Мой личный подход заключается в том, чтобы разблокировать мои ключи в начале дня, используя SSH-агент, который затем сохраняет дешифрованные ключи в памяти, так что мне не нужно повторно вводить пароль в течение дня. Как комментирует @Hugh Perkins, и я перефразирую, вы все знаете свои требования безопасности лучше, чем я / мы делаем :). - GregB


Если вы используете msysgit с инструментами OpenSSH, вам нужно либо создать ~/.ssh/id_rsa, или создать git config в ~/.ssh/configкоторый указывает на ваш ключ.

Ниже приведен пример конфигурации Git для BitBucket, которая будет использовать правильное имя пользователя и ключ, отличный от ключа по умолчанию (в случае, если вы поддерживаете один ключ для соединений SSH, а другой для учетных записей git).

~ / .ssh / конфигурации:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Как только вы запустите git bash, вы можете запустить две команды, чтобы добавить свой ключ к ssh-агенту текущего сеанса, чтобы избежать повторного ввода пароля ключа.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

32
2018-04-11 06:34



Я сделал это, но для github.com: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Если у вас есть пробел в вашем пути, вам нужно использовать кавычки: IdentityFile "/ C / My Keys / key" - r03
Я предпочитаю этот путь, потому что это позволило мне быстро соединить существующие ключи с другого ПК - Kirill Gusyatin
В моем .gitconfig есть разделы. В каких разделах я должен помещать эти хосты? - Steve Yakovenko


Я просто установил% HOME% =% HOMEPATH%

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

В Vista:

  1. Щелкните правой кнопкой мыши на компьютере
  2. Выберите «Свойства»
  3. Нажмите «Дополнительные настройки системы»
  4. Нажмите «Переменные среды»
  5. В нижней части (Системные переменные) Нажмите «Создать»
  6. Для имени переменной: HOME
  7. Для типа пути переменной:% HOMEPATH%
  8. Нажмите ОК.

14
2017-10-12 01:26



В моем случае я добавил HOME =% USERPROFILE% - igor
Обратите внимание, что %HOMEPATH% не содержит буквы диска, поэтому, если ваш источник не включен C: вам нужно добавить C: в %HOME%, - Graeme Perrow


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

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



Я сказал выше, что я использую Git для Windows и использую ssh.exe (упакованный w / git) вместо шпатлевки. Должна быть какая-то стандартная практика для добавления закрытого ключа, я просто не могу понять, как это сделать. Хотя переключение программного обеспечения действительно позволяет мне войти в систему, должен быть способ сделать это со стандартной настройкой Git, нет? - binaryorganic
Извините, я не работаю над окнами, только linux. Но ключ должен быть в вашем агенте SSH. есть ли agent.exe или что-то в этом роде? - Declan Shanaghy
Да, настройка была торт на стороне Linux. Но, к сожалению, мне тоже приходится работать над Windows. В папке git / bin в окне Windows есть несколько исполняемых файлов, связанных с ssh (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), но я не знаю, как сделать любой из них Делать что-нибудь. Они просто мигают оконным окном cmd и закрываются сразу. Я в тупике. - binaryorganic
Pageant действительно решает проблему для меня - у меня есть ярлык в моей папке Startup Startup (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) указывает на "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", так что он загружает мои SSH-ключи при запуске, и это делает GIT «просто работать»: o) - Owen Blacker
@OwenBlacker OMFG! Вы определенно должен напишите этот комментарий как полноразмерный ответ! Это единственное решение здесь, что на самом деле помогло мне и решило мою проблему! Жаль, что я могу дать вам всего +1! :] - trejder


Оке, я смотрю на

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

Поэтому, если вы хотите правильно защитить свой ssh-ключ, вам нужно поместить свой ключ в следующий каталог для Windows 7,8 и 8.1 32-бит в

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

для Windows 7,8 и 8.1 64-бит в

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \

Надеюсь, это поможет некоторым из вас


5
2017-09-08 10:04



Привет, Бас. Я думаю, вы должны удалить свой вопрос и спросить или дать его Суперпользователь потому что это неправильный сайт для такого рода вопросов / ответов :-) - Ian Macintosh
Это не исключение от меня просто sugestion - Bas van den Dikkenberg
Это было самое простое решение на моей машине Win7. Как и вы, я искал known_hosts, Конечно, это было C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh, Поместив мой ключевой файл (id_rsa) в этот каталог, ssh смог найти его без жалобы. Я немного почитал - это то, как Windows обрабатывает (устаревшее) программное обеспечение, пытающееся писать в запрещенные области (например, «C: \ Program Files \»), поэтому ssh Git полностью не знает, что он пишет в каталог VirtualStore, Windows это прозрачная обработка. По крайней мере, эти файлы принадлежат пользователю! - DaveGauer