it-swarm-ru.tech

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

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

503
binaryorganic

Для Git Bash

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

493
Dan McClain

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

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

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

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

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

108
Oct

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

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

Скриншот ниже:

Enter image description here

57
pacey

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

  • Откройте Git Bash Prompt
  • Введите 'ssh-keygen'
    • Принять местоположение по умолчанию
    • Выберите пустую фразу-пароль (поэтому просто нажмите "Ввод" для всех вопросов)
  • Теперь скопируйте открытый ключ на ваш сервер, например: scp ~/.ssh/id_rsa.pub [email protected]: ~

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

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

Это оно! Вы сделали! Из Git Bash сделайте следующее, чтобы проверить:

ssh [email protected] ls

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

Для GitHub у вас нет доступа Shell к их серверу, но вы можете загрузить ключ, используя их веб-сайт, поэтому для бита "теперь скопируйте на ваш сервер" выполните:

  • В Git Bash введите "cat ~/.ssh/id_rsa.pub", выберите результат и скопируйте его в буфер обмена.
  • На веб-сайте GitHub перейдите в "Настройки учетной записи", "Ключи SSH и GPG", нажмите "Новый ключ SSH" и вставьте ключ.
51
Hugh Perkins

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

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

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

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

Попав в Git Bash, вы можете запустить две команды, чтобы добавить свой ключ в ssh-agent вашего текущего сеанса, чтобы избежать необходимости многократного ввода пароля ключа.

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

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

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

В Vista:

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

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

Мой Git был установлен Chocolatey to 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 of keyscan (в Windows) изменяет кодировку на UCS-2, но OpenSSH может читать только UTF-8! Поэтому не забудьте изменить known_hosts кодировка файла.

9
oglop

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

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

7
Declan Shanaghy

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

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

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

4
Eric Blade

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

  1. Скачать pageant.exe, puttygen.exe, PuTTY.exe а также plink.exe с сайта PuTTY. Поместите их в C:\puttyTools каталог.
  2. Запустить puttygen.exe.
  3. Нажмите кнопку Generate,.
  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, и появится диалоговое окно с вопросом, принимаете ли вы отпечаток пальца сервера: нажмите YES.
  13. Запустите новый экземпляр вашего MINGW64 Git console и проверьте наличие переменных среды, написав команду env | grep -i ssh.
  14. Вы должны быть все готово. Попробуйте клонировать протокол Git + SSH с вашего хоста.

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

4
knocte

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

Но помещать свои личные 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 \

3
Bas van den Dikkenberg

При смешивании 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 = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/Origin/*
3
IDisposable

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

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

2
Eric Cloninger

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

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

файл и положить:

IdentityFile C:\Users\adria\.ssh\mysshkey
2
Adrian Onu

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

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

1
Owen Blacker

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

1
Alexander Pacha

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

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

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

в Windows, используя msys (стандартная консоль Windows) C:\Users\{you}\.ssh\id_rsa

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

Я столкнулся с этим желанием клонировать некоторые частные репозитории в Ruby MSYS CLI для Windows 10 64-bit

1
MrMesees

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

Смотрите Генерация нового ключа SSH и добавление его в ssh-agent.

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
0
Matoeil

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

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

0
naydichev

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

0
eeree

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

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

0
Spedge

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

Git распознает это и использует это для Push/Pull.

0
deepakkt

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

0
torbenl

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

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

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

0
Vlad Schnakovszki

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

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

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

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

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

0
user228414

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

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

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

$ ssh -v [email protected]
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% останавливает его, глядя на удаленный домашний диск.

0
KCD

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

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

0
snow6oy

Используя Windows 10, я не смог заставить работать сгенерированный SSH ключ, созданный на конкурсе (по крайней мере, для Git в командной строке, используя SourceTree, у меня не было проблем) при запуске:

git Push Origin master

Итак, мое решение:

  1. Я открыл "Git Bash"
  2. Ран

    ssh-keygen
    
  3. Подтвержденные ключи теперь существуют

    ls ~/.ssh
    
  4. Открыл id_rsa.pub в Notepad ++, выделил все содержимое

  5. Добавлен новый ключ в Bitbucket, https://bitbucket.org/account/user/myusername/ssh-keys/

  6. Помечено и вставлено содержимое в поле ключа -> Добавить ключ

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

0
HostMyBus

TortoiseGit позволяет вам указать ключ, который будет использоваться при клонировании репозитория. Просто отметьте "Загрузить ключ PuTTY" и перейдите к .ppk файл, как на скриншоте: https://i.stack.imgur.com/lAyzT.png

0
NGNeer

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

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

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

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

0
duccom