Как сообщить Git для Windows, где можно найти свой закрытый ключ RSA?
Моя настройка GIT отлично работает в Linux, но когда я пытаюсь настроить вещи под Windows (используя Git для Windows и TortoiseGit), я не знаю, где разместить свой закрытый ключ ssh (или, еще лучше, как скажите ssh, где он находится). Я использую стандартный параметр ssh.exe во время установки Git для Windows. Настройка выполняется нормально, если я разрешаю аутентификацию паролем (вместо rsa) на сервере.
30 ответов
Для Git Bash
Если вы используете msysgit (я предполагаю, что вы) и хотите запустить Git Bash (я рекомендую его по TortoiseGit, но теперь я наклоняюсь к CLI больше, чем GUI), вам нужно выяснить, что ваш домашний каталог для Git Bash, запустив его, введите pwd
(On 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 с
Используя встроенный клиент SSH, поставляемый с Git для Windows, вам необходимо настроить переменную среды HOME, чтобы клиент Git SSH мог найти ключ.
Например, при установке Windows Vista em> это можно сделать, выпустив
Сделал мой день и исправил проблему с Git при условии, что ваш закрытый ключ не защищен паролем. Если вы хотите использовать ssh-agent, вы можете запустить ssh-agent cmd.exe (хотя я этого никогда не делал) и ssh-add, как обычно.
Обратите внимание, что все инструменты Git /SSH должны запускаться из cmd.exe, чтобы не было blink .
Если это не работает правильно, использование plink может быть достигнуто путем настройки GIT_SSH . Обратитесь ко всем учебным пособиям svn + ssh, это в основном та же самая сантехника, которую вам нужно настроить.
Вы можете указать местоположение ключа для Tortoisegit следующим образом:
- Откройте окно проводника.
- Откройте контекстное меню и выберите
TortoiseGit
>Settings
- В открывшемся окне Перейдите к
Git
>Remote
- Задайте путь к ключу Putty в соответствующем поле ввода.
Снимок экрана ниже:
Ни один из ответов выше не работал для меня. Вот что сработало для меня в конце. На самом деле это довольно просто, если вы знаете, что вводить. Он не нуждается в шпаклере.
- открыть приглашение git bash
- тип '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 у вас нет доступа к оболочке на свой сервер, но вы можете загрузить ключ с помощью своего веб-сайта, поэтому для бит «теперь скопируйте на свой сервер» выполните:
- в git bash, введите 'cat ~ /.ssh /id_rsa.pub', выберите результат и скопируйте его в буфер обмена
- На веб-сайте github перейдите в «Настройки учетной записи», «ssh keys», нажмите «Добавить ssh-ключ» и вставьте ключ
Если вы используете 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-агенту текущего сеанса, чтобы избежать повторного ввода пароля ключа.
eval `ssh-agent`
ssh-add /C/keys/yourkey.key
Я просто установил% HOME% =% HOMEPATH%
Это имеет преимущество в работе для всех пользователей, зарегистрированных в системе (каждый из них получает отдельные папки .ssh).
В Vista:
- Щелкните правой кнопкой мыши на компьютере
- Выберите «Свойства»
- Нажмите «Дополнительные параметры системы»
- Нажмите «Переменные среды»
- В нижней части (Системные переменные) Нажмите «Создать»
- Для типа имени переменной: HOME
- Для типа пути переменной:% HOMEPATH%
- Нажмите «ОК»
Ваш частный ключ должен быть добавлен к агенту SSH на вашей рабочей станции. Как вы это достигаете, может зависеть от того, какой клиент git вы используете, однако PUTTY и связанный с ним агент (конкурс) могут сделать трюк для вас, вот ссылка на официальные двоичные файлы и источник:
http://www.chiark.greenend.org. ик /~ sgtatham /шпатлевка /download.html
Oke, я смотрю на sugestion
Но размещение в моих личных 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 \
Я надеюсь, что это поможет некоторым из вас
В моем случае я использовал Git для окон в контейнере docker widowsservercore
Мой git был установлен с помощью chochcolately
в 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
для окон вместе с openSSH
для окон. git
по-прежнему использует собственный ssh
.
Плюс, если вы планируете использовать ssh-keyscan host.com > known_hosts
из openSSH
быть осторожным, потому что вывод из stdout
из keyscan
(на окнах) изменяет encoding
to UCS-2
, но openSSH
может читать только utf-8
! Поэтому обязательно измените кодировку файла known_hosts
.
При смешивании 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/*
У меня были подобные проблемы, и ни один из ответов здесь не разрешил проблему. Оказывается, моя ключевая пара была первоначально сгенерирована с пустой кодовой фразой. (Я знаю, немой)
Как только я создал новую пару ключей и загрузил открытый ключ в github, все снова заработало.
Следующий ответ также относится к этому вопросу при запуске ssh из учетной записи службы Windows: Дженкинс (служба Windows) с Git over SSH
Вы можете указать как путь к ключу, так и имя файла ключа, например (на ubuntu). Например:
ssh -i /home/joe/.ssh/eui_rsa
Я изначально разместил это как комментарий, но кто-то предложил мне опубликовать его как правильный ответ.
Pageant (агент SSH, поставляемый с пустым пакетом PuTTY ) решает проблему для меня.
У меня есть ярлык в папке запуска Start Menu (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)
Самый эффективный способ - использовать Pageant, потому что он позволит вам вводить кодовую фразу только один раз в начале сеанса вместо каждого нажатия. Все ответы здесь были слишком короткими, поэтому я опубликую здесь подробное руководство:
- Загрузите
pageant.exe
,puttygen.exe
,putty.exe
иplink.exe
с сайта Putty , поместите их в каталогC:\puttyTools
. - Запустите
puttygen.exe
. - Нажмите кнопку «Создать».
- В верхней части окна покачивается указатель мыши, пока индикатор выполнения не будет заполнен, как запросит программа.
- Предоставьте кодовую фразу и повторите ее в следующем текстовом поле.
- Нажмите «Сохранить закрытый ключ». Обычным каталогом для их сохранения является
%USERPROFILE%\_ssh
(на моем компьютере это сопоставляется сC:\Users\andres\.ssh\
). Неважно, что вы называете ключом, но для демонстрационных целей я назову его github.ppk. Этот файл должен иметь расширение .ppk. - Скопируйте текст в верхнем текстовом поле в PuTTYgen, который обозначен как
Public key for pasting into OpenSSH authorized_keys file
и вставьте его в новый ключ SSH в настройках Github. Дайте ему название, которое описывает, на какой машине находится ключ (например, «Рабочий ноутбук»). - Запустите
pageant.exe
, появится новый значок systray. - Щелкните правой кнопкой мыши значок -> Добавить ключ.
- Найдите ваш ppk-файл, введите свою фразу.
- Создайте эти новые переменные пользовательской среды (через приложение app
Environ
через WindowsMenu, которое найдетEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
иSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
- Откройте putty.exe и попробуйте подключиться к хосту, на котором размещены ваши репозитории git, например, попробуйте подключиться к github.com через SSH, и в диалоговом окне вы спросите, принимаете ли вы отпечаток на сервере: нажмите ДА.
- Запустите новый экземпляр вашей консоли
MINGW64
git, убедитесь, что переменные среды находятся там, написав командуenv | grep -i ssh
. - Вы должны быть настроены, попробуйте клонировать протокол git + ssh с вашего хоста.
(Первоначально извлеченный из этих двух руководств, которые я объединил в одном: https: //gist.github.com/dmangiarelli/1a0ae107aaa5c478c51e#ssh-setup , https://rperki.blogspot.hk/2014/09/configure-mingw-w64msys-to-use-putty.html )
Прочитав свой комментарий к ответу Declan, сначала попробуйте открыть командную строку (Start -> Run -> cmd), а затем перейдите к этой папке git /bin и запустите ssh-keygen. Теоретически это создаст ключ RSA и поместит его в соответствующий каталог. Тогда вам просто нужно найти его и поделиться своим открытым ключом с миром.
Причина, по которой окно «мигает», заключается в том, что окна запускают программу, и когда она выполняется, она закрывает командную строку, думая, что с ней все закончилось, когда вам действительно нужен выход.
Надеюсь, что это поможет!
Использование Git Gui в Windows v0.17 Я нажал на следующие команды меню
Справка> Показать ключ SSH
Появилось диалоговое окно под названием Открытый открытый ключ OpenSSH . Я сгенерировал ключ и скопировал его в буфер обмена. Затем я продолжал следовать инструкциям setup-ssh на githelp от Шаг третий и далее. Впоследствии Гит Гуй молча общался с Гитубом - не нужно вводить никаких учетных данных.
В моей системе Windows 7 GitGui ищет ключ RSA в папке userprofile /.ssh или, более конкретно, c: /users/yourusername/.ssh /
Трудная часть моей настройки заключалась в том, что хост-хозяин хоста принимал ключ. Единственным способом, с помощью которого я мог работать, было использование GitGui для создания пар ключей (без пароля), а затем копирование и вставка открытого ключа через панель управления, ssh, управление ключами.
Чтобы начать с самого начала, вам нужно создать ключи в GitGui, перейдя в раздел «Справка», «Показать SSH», затем «Генерировать ключ». Теперь у вас будет два новых ключа в каталоге .ssh. Откройте файл .pub и скопируйте содержимое. Войдите в свою панель управления на общем хосте и войдите в ssh, управляйте ключами ssh, импортируйте ключ. Вставьте в поле «Публикация» и убедитесь, что вы назовете его правильным именем без расширения - мой был id_rsa. Теперь вы должны авторизовать ключ, используя ссылку авторизации управления, поэтому он будет конкатенироваться в файле authorized_keys.
Теперь ваш GitGui и ваш GitBash должны иметь возможность нажать с помощью ssh без ввода пароля. Как ни странно, я смог нажать ssh с помощью git bash и git gui на моих собственных серверах, работающих под управлением Linux, это был просто общий хостинг, который давал мне возможность. Надеюсь, это помогает кому-то, поскольку мне потребовалось много времени и ошибок, чтобы придумать это - и это так просто!
Если вы находитесь в Windows 7/8, вы должны посмотреть в C: \ Users \ Your_User_Name.ssh Просто скопируйте & вставьте здесь свой файл id_rsa, и все будет готово к работе.
Стандартное расположение файлов находится в %USERPROFILE%\.ssh
%USERPROFILE%
эквивалентен $ HOME в Unix. (обычно соответствует чему-то вроде c:\users\youruserid
)
Если вы используете инструменты ssh, которые поставляются с git, которые являются стандартными инструментами командной строки в стиле командной строки, вы можете использовать что-то вроде мой скрипт здесь для работы с ssh-agent во всех оболочках.
Если вы используете командную строку Git для Windows, вы можете сделать следующее:
Откройте cmd.exe
и выполните setx HOME c:\PATH_TO_PRIVATE_KEY
Создайте новую папку .ssh
(если не существует) внутри c:\PATH_TO_PRIVATE_KEY
и скопируйте файл id_rsa
(ваш закрытый ключ) в он.
Готово, теперь вы можете использовать git commanline обычно
Одна ошибка, которую я совершил при использовании SSH в Windows, заключалась в том, что когда я пытался использовать ключи через клиент Git Bash, все файлы в ~ /.ssh были неправильными разрешениями, но они не пытались сказать мне, что это была проблема.
Как тест, убедитесь, что вы установили все в свой каталог ~ /.ssh в chmod 600.
Если у вас есть необходимые разрешения на компьютере Windows, и ваши политики позволяют это, я бы предложил установить Cygwin ( https: //cygwin.com/), особенно учитывая, что у вас есть предыдущий опыт работы с Linux. Cygwin позволит обрабатывать ваши ssh-ключи, как на любой другой машине Linux /Unix. И он обеспечивает доступ почти ко всем инструментам cli для Linux.
Вы также можете загрузить Putty Agent (pageant) и добавить закрытый ключ, созданный с помощью Putty для сервера.
Git распознает это и использует это для push /pull.
Мой msysgit . Опыт OpenSSL /Bash GIT (а не плагин Putty) заключается в том, что порядок поиска для вашей папки .ssh/
выглядит следующим образом.
-
%HOME%/.ssh/
-
%HOMEDRIVE%%HOMEPATH%/.ssh/
-
%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 является %USERPROFILE%/.ssh
и имеет ключи локально. Установка C:/Users/Username/.ssh
на %HOME%
останавливает его, глядя на удаленный домашний диск.
TortoiseGit позволяет указать ключ для использования при клонировании репозитория. Просто проверьте «Load Putty Key» и перейдите к файлу .ppk
, как на скриншоте:
Я исправил вышеупомянутую проблему, создав
~ /.ssh /конфигурации
и поместите:
IdentityFile C:\Users\adria\.ssh\mysshkey
Я использовал TortoiseGit
, а также git bash
на Windows
, в зависимости от необходимости. Я добавил все в TortoiseGit
, и он работал нормально, но git bash
не собирал его, даже если ключи находились в правильном каталоге. Оказывается, я должен был сделать это из git bash
:
ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa
Вы можете, конечно, изменить путь к тому месту, где находится ваш ключ, не забывая использовать \\
в качестве разделителя.
, если вы используете git для окон, когда сгенерированы ssh-ключи,
u должен добавить ваш SSH-ключ в ssh-agent
Используя Windows 10, я не смог заставить сгенерированный скрипт ssh работать (по крайней мере для git в командной строке, используя SourceTree, у меня не было проблемы) при запуске:
git push origin master
Итак, мое решение:
- Я открыл «Git Bash»
-
Ран
SSH-кейген
-
Теперь существуют подтвержденные ключи
ls ~ /.ssh
-
Открыл id_rsa.pub в Notepad ++, выбрал все содержимое
-
Добавлен новый ключ в битбакет https://bitbucket.org /счет /пользователь /MyUserName /SSH-ключи /
-
Маркированное и вставленное содержимое в ключевое поле -> Добавить ключ
После этой командной строки git работал, кажется, что он хочет старый формат PEM, потому что, если я попытаюсь импортировать этот ключ в pageant, он говорит так же