Назад | Перейти на главную страницу

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

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

Для Git Bash

Если вы используете msysgit (я предполагаю, что это так) и хотите запустить Git Bash (я рекомендую его поверх TortoiseGit, но сейчас я больше склоняюсь к CLI, чем к графическому интерфейсу), вам нужно выяснить, какой у вас домашний каталог для Git Bash, запустив его, затем введите pwd (В Windows 7 это будет что-то вроде 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.

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

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

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

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

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

Вы можете указать местоположение ключа для TortoiseGit следующим образом:

  • Откройте окно проводника.
  • Откройте контекстное меню и перейдите TortoiseGitНастройки
  • В открывшемся окне перейдите к GitУдаленный
  • Задайте путь к вашему ключу PuTTY в соответствующем поле ввода.

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

Ни один из предыдущих ответов не помог мне. Вот что в итоге сработало для меня. На самом деле это довольно просто, если вы знаете, что набирать. PuTTY не нужен.

  • Откройте приглашение Git Bash
  • Введите 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 и GPG», нажмите «Новый ключ SSH» и вставьте ключ.

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

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

~ / .ssh / config:

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

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

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

В Vista:

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

В моем случае я использовал Git для Windows в контейнере Docker windowsservercore.

Мой Git был установлен Шоколадный к C:\Program Files\Git.

Мне пришлось обновить файл C:\Program Files\Git\etc\ssh\ssh_config с этим:

Host example.com
   Identityfile ~/.ssh/id_rsa

Тогда я мог использовать ключ от C:\Users\<user>\.ssh\id_rsa

Если вы используете Git для Windows вместе с OpenSSH для Windows. Git по-прежнему использует собственный ssh.

Плюс, если вы планируете использовать ssh-keyscan host.com > known_hosts из OpenSSH, будьте осторожны, потому что конвейерный вывод из stdout из keyscan (в Windows) меняет кодировку на UCS-2, но OpenSSH может читать только UTF-8! Поэтому не забудьте изменить known_hosts кодировка файла.

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

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

Самый эффективный способ - использовать Pageant, потому что он позволит вам писать парольную фразу только один раз в начале сеанса вместо каждого нажатия. Все ответы здесь были слишком короткими, поэтому я опубликую здесь подробное руководство:

  1. Скачать pageant.exe, puttygen.exe, putty.exe и plink.exe с сайта PuTTY. Поместите их в C:\puttyTools каталог.
  2. Бегать puttygen.exe.
  3. Нажмите кнопку Генерировать.
  4. Покачивайте мышью в верхней части окна, пока индикатор выполнения не заполнится, как того требует программа.
  5. Введите кодовую фразу и повторите ее в следующем текстовом поле.
  6. Нажмите «Сохранить закрытый ключ». Обычный каталог для их сохранения: %USERPROFILE%\_ssh (на моем компьютере это соответствует C:\Users\andres\.ssh\). Неважно, как вы называете ключ, но в демонстрационных целях я назову его github.ppk. Этот файл должен иметь расширение .ppk.
  7. Скопируйте текст в верхнем текстовом поле в PuTTYgen, помеченный Public key for pasting into OpenSSH authorized_keys file и вставьте его в новый ключ SSH в настройках GitHub. Дайте ему название, описывающее, на каком компьютере находится ключ (например, «Рабочий ноутбук»).
  8. Бегать pageant.exeпоявится новый значок на панели задач.
  9. Щелкните правой кнопкой мыши значок -> Добавить ключ.
  10. Найдите свой файл ppk и введите кодовую фразу.
  11. Создайте эти новые переменные среды пользователя (путем поиска приложения Environ через WindowsMenu, который найдет Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe" и SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Откройте putty.exe и попробуйте подключиться к хосту, на котором вы размещаете свои репозитории Git. Например, попробуйте подключиться к github.com через SSH, и в диалоговом окне вас спросят, принимаете ли вы отпечаток сервера: нажмите ДА.
  13. Запустите новый экземпляр вашего MINGW64 Git console и убедитесь, что переменные среды присутствуют, написав команду env | grep -i ssh.
  14. У вас должно быть все готово. Попробуйте клонировать с вашего хоста по протоколу Git + SSH.

(Первоначально извлечено из этих двух руководств, которые я объединил в одно: Как настроить Git для Windows и Настройте MinGW-W64 + MSYS для использования PuTTY Plink / Pageant.)

Стандартное расположение файлов - в %USERPROFILE%\.ssh.

%USERPROFILE% эквивалент $ HOME в Unix (обычно отображается на что-то вроде c:\users\youruserid).

Если вы используете инструменты SSH, поставляемые с Git, которые являются стандартными инструментами командной строки в стиле Unix, вы можете использовать что-то вроде мой сценарий здесь для работы с ssh-agent во всех оболочках.

При смешивании GitHub для Windows и Git GUI для Windows вы можете столкнуться с проблемами, когда Git GUI постоянно запрашивает у вас имя пользователя и пароль. Лекарство от этого - изменить удаленный URL-адрес с https: (это то, что создает GitHub для Windows) в протокол Git. в .git каталог в файле конфигурации найдите:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

Измените его на:

[remote "origin"]
    url = git@github.com:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Хорошо, я посмотрел на предложение ..

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

Поэтому, если вы хотите правильно защитить свой SSH-ключ, вам нужно поместить его в следующий каталог:

Для 32-разрядной версии Windows 7, 8 и 8.1:

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

Для 64-разрядной версии Windows 7, 8 и 8.1:

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

У меня были похожие проблемы, и ни один из ответов здесь не решил проблему. Оказывается, моя пара ключей изначально была создана с пустой кодовой фразой. (Я знаю, тупой.)

Как только я создал новую пару ключей и загрузил открытый ключ в GitHub, все снова заработало.

Я исправил указанную выше проблему, создав

~ / .ssh / config

файл и поместите:

IdentityFile C:\Users\adria\.ssh\mysshkey

Многие ответы говорят об этом, но для меня недостаточно быстро!

в Windows с помощью msys (стандартная консоль Windows) C:\Users\{you}\.ssh\id_rsa

В основном это не мешает сканировать установленные ключи (по крайней мере, на моем новом ноутбуке), и поэтому нужно специально id_rsa

Я столкнулся с этим, желая клонировать некоторые частные рабочие репозитории в ruby ​​MSYS CLI для 64-разрядной версии Windows 10.

Pageant (агент SSH, поставляемый с Пакет PuTTY) решает проблему для меня.

У меня есть ярлык в папке «Автозагрузка» в меню «Пуск» (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)

Вы можете указать как путь к ключу, так и имя файла ключа, например (в Ubuntu). Например:

ssh -i /home/joe/.ssh/eui_rsa

Следующий ответ также относится к этому вопросу при запуске ssh из учетной записи службы Windows: Jenkins (служба Windows) с Git через SSH

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

Git это понимает и использует для push / pull.

Мой msysgit Опыт OpenSSL / Bash Git (а не PuTTY) заключается в том, что порядок поиска для вашего .ssh/ папка выглядит следующим образом.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

Вот почему так много людей предлагают установить HOME если один из остальных не соответствует вашим ожиданиям. Что еще более важно, вы можете проверить сами; отладить использование ssh -v на сервер, который использует аутентификацию с открытым ключом следующим образом:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

Мы нашли ssh поиск на неизвестном диске, и ни один из предыдущих ответов, похоже, не объяснял то, что мы видели.

Иногда %HOMEDRIVE%%HOMEPATH% подключенный сетевой диск (например, H:/), что вызывает ненужные сбои при проблемах с сетью / файловым сервером, даже если %USERPROFILE%/.ssh является C:/Users/Username/.ssh и имеет ключи локально. Настройка %HOME% к %USERPROFILE% перестает смотреть на удаленный домашний диск.

Если вы используете командную строку Git для Windows, вы можете сделать следующее:

открыто cmd.exe и выполнить setx HOME c:\PATH_TO_PRIVATE_KEY.

Создать новую папку, .ssh, (если не существует) внутри c:\PATH_TO_PRIVATE_KEY и скопируйте свой id_rsa файл (ваш закрытый ключ) в него.

Готово. Теперь вы можете нормально использовать командную строку Git.

В моей системе Windows 7 Git Gui ищет ключ RSA в userprofile/.ssh папка или более конкретно c:/users/yourusername/.ssh/.

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

Чтобы начать с самого начала, вам нужно создать ключи в Git Gui, перейдя в меню Помогите, Показать ключ SSH, затем Создать ключ. Теперь у вас будет два новых ключа в .ssh каталог. Открой .pub файл и скопируйте его содержимое.

Войдите в свою панель управления на общем хосте и войдите в SSH, Управление ключами SSH, и Импортировать ключ. Вставить в Общественные поле и убедитесь, что вы назвали его правильным именем без расширения - мое было id_rsa. Теперь вы должны авторизовать ключ, используя ссылку управления авторизацией, чтобы он был объединен в authorized_keys файл.

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

Используя v0.17 Git Gui в Windows, я щелкнул следующую команду меню: ПомогитеПоказать ключ SSH.

Появился диалог под названием Ваш открытый ключ OpenSSH. Я сгенерировал ключ и скопировал его в буфер обмена. Затем я продолжил следовать инструкциям setup-ssh на githelp из Шаг третий вперед. После этого Git Gui молча общался с GitHub - вводить какие-либо учетные данные не нужно.

Прочитав свой комментарий к ответу Деклана, попробуйте сначала открыть командную строку (Пуск → Бегатьcmd), а затем перейдите в эту папку git / bin и запустите ssh-keygen. Теоретически это сгенерирует ключ RSA и поместит его в соответствующий каталог. Тогда вам просто нужно найти его и поделиться своим открытым ключом со всем миром.

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

TortoiseGit позволяет указать ключ, который будет использоваться при клонировании репозитория. Просто установите флажок «Загрузить ключ шпатлевки» и перейдите к .ppk файл, как на скриншоте:

Если у вас есть необходимые разрешения на компьютере с Windows и ваша политика разрешает это, я бы предложил установить Cygwin (https://cygwin.com/), особенно если учесть, что у вас уже есть опыт работы с Linux. Cygwin позволит обрабатывать ваши ssh-ключи, как на любой другой машине Linux / Unix. И он обеспечивает доступ почти ко всем инструментам cli Linux.

Одна ошибка, которую я сделал при использовании SSH в Windows, заключалась в том, что, когда я пытался использовать ключи через клиент Git Bash, все файлы в ~ / .ssh были неправильными разрешениями, но он не пытался сказать мне, что это был проблема.

Просто в качестве теста убедитесь, что вы установили все в своем каталоге ~ / .ssh на chmod 600.

Если вы используете Windows 7/8, вам следует заглянуть в C: \ Users \ Your_User_Name.ssh Просто скопируйте и вставьте сюда свой файл id_rsa, и все будет работать сразу после установки.

Я использовал TortoiseGit, а также Git Bash в Windows, в зависимости от необходимости. Я добавил все в TortoiseGit, и он работал нормально, но Git Bash не улавливал это, хотя ключи находились в правильном каталоге. Оказывается, мне пришлось сделать это из Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

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

Если вы используете Git для Windows, после создания ключей SSH вы должны добавить свой SSH-ключ в ssh-agent.

Видеть Создание нового ключа SSH и добавление его в ssh-agent.

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa