Моя установка Git отлично работает в Linux, но когда я пытаюсь настроить что-то под Windows (используя Git для Windows и TortoiseGit), Я не знаю, где разместить свой закрытый SSH-ключ (или, что еще лучше, как узнать ssh
где он находится). Я использую стандартный вариант ssh.exe во время установки Git для Windows. Настройка работает нормально, если я разрешаю аутентификацию по паролю (вместо RSA) на сервере.
Если вы используете 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 вам необходимо установить ключ 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 следующим образом:
Снимок экрана ниже:
Ни один из предыдущих ответов не помог мне. Вот что в итоге сработало для меня. На самом деле это довольно просто, если вы знаете, что набирать. PuTTY не нужен.
Это то, что сделано на вашем собственном компьютере. Сейчас 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 у вас нет доступа к оболочке их сервера, но вы можете загрузить ключ с их веб-сайта, поэтому для бит «теперь скопируйте на свой сервер» выполните:
Если вы используете 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:
В моем случае я использовал 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, потому что он позволит вам писать парольную фразу только один раз в начале сеанса вместо каждого нажатия. Все ответы здесь были слишком короткими, поэтому я опубликую здесь подробное руководство:
pageant.exe
, puttygen.exe
, putty.exe
и plink.exe
с сайта PuTTY. Поместите их в C:\puttyTools
каталог.puttygen.exe
.%USERPROFILE%\_ssh
(на моем компьютере это соответствует C:\Users\andres\.ssh\
). Неважно, как вы называете ключ, но в демонстрационных целях я назову его github.ppk
. Этот файл должен иметь расширение .ppk.Public key for pasting into OpenSSH authorized_keys file
и вставьте его в новый ключ SSH в настройках GitHub. Дайте ему название, описывающее, на каком компьютере находится ключ (например, «Рабочий ноутбук»).pageant.exe
появится новый значок на панели задач.Environ
через WindowsMenu, который найдет Edit environment variables for your account
): GIT_SSH = "C:\puttyTools\plink.exe"
и SVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
Git console и убедитесь, что переменные среды присутствуют, написав команду env | grep -i 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/
папка выглядит следующим образом.
%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%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