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


487

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


У меня та же проблема, я могу зайти в свой dev-сервер с помощью открытого ключа «root», используя программу «Git Bash», которая установлена ​​с «Git For Windows», но я не могу войти как «git» с моим ключ, несмотря на то, что я скопировал мой файл "authorised_keys" из моего "root" в моего пользователя "git" и правильно установил владельцев и разрешения. Почему я не могу войти в систему как "git", когда "root" работает с точно таким же файлом "author_keys". Вместо этого для «git» он пропускает все закрытые ключи, которые в точности совпадают с «root», и запрашивает пароль. Кстати, это сервер Centos 5.5.

@fuzzy lollipop: у вас есть права доступа к файлу авторизованного ключа вашего пользователя git? Это должен быть chmod 600, и он должен принадлежать пользователю git. Если он принадлежит пользователю root, он не будет работать
Dan McClain

да все файлы и каталоги являются правильными владельцами и разрешениями

Ответы:


486

Для 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.


4
Инструкции Pacey для tortoisegit не будут работать, пока у вас не будет хранилища (потому что «удаленная» настройка конфигурации не появится, если вы не будете действовать в репо), и вы, вероятно, не сможете получить хранилище в первую очередь, если сможете » аутентифицировать себя для того, чтобы клонировать от источника. Tricky!
Kylotan

43
С GitBash я обнаружил, что должен был скопировать свой ~/.ssh/id_rsaфайл в Program Files\Git\.ssh\id_rsa- что немного сбивало с толку, но теперь IntelliJ и Windows cmd могут использовать git-репозитории, использующие аутентификацию по ключам.
JP.

7
Точно так же. Я только что установил git-for-windows, я запускаю его из cmd.exe. Мне нужно было положить файлы id_rsaи id_rsa.pubв c:\program files (x86)\Git\.ssh. Режиссёр .sshуже присутствовал. Спасибо, JP.
Cheeso

5
Второй абзац был золотой. :)
Бьёрн

4
@Damon: должно быть id_rsaбез расширения. Это имя файла, это не каталог
Дэн Макклейн,

107

Используя встроенный 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; это в основном та же сантехника, которую нужно настроить.


16
Это то, что я искал, так как я пытаюсь использовать командную строку Windows, а не git bash.
Джон Руис

Хорошо, легко исправить, но без этого было бы сложно разобраться!
thaddeusmt

Важно также, чтобы не было пробелов между HOME = и c: \ ... Решение Октября помогло мне. :-)
Лутц

2
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use Cmd` вместо этого.
Трейдер

2
+1GIT_SSH=c:\pathto\plink.exe
Ник Грейли

54

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

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

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

Введите описание изображения здесь


8
Кроме того, если вам нужно преобразовать свой закрытый ключ в формат «.ppk» из другого формата, вы можете следовать ЭТОМУ
Tariq M Nasim

Это сработало для меня.
Максим Елисеев

6
Git> Remote появляется только после того, как вы успешно клонировали репозиторий.
Стив Питчерс

5
Намного более простое решение состоит в том, чтобы все настроить правильно в git (используя openSSH), а затем сказать TortoiseGit использовать ssh.exe, используемый git. См. Stackoverflow.com/a/33328628/318317 Таким образом, вам нужно исправить это только один раз.
Даниэль Роуз

50

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

  • Откройте приглашение 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» и вставьте ключ.

8
Не создавайте ключи без парольных фраз. Это все равно, что поместить свой пароль в текстовый файл, за исключением того, что все знают местоположение по умолчанию для закрытых ключей.
GregB

14
Вы отвечаете не на тот вопрос. Вопрос в том, как указать на существующий закрытый ключ.
Orangutech

7
@GregB, я смотрю на это так: любой сервер, для которого я создаю ключ без пароля, так же безопасен, как мой ноутбук, это расширение периметра безопасности моего ноутбука. На самом деле, даже не так, поскольку мой домашний каталог зашифрован ;-) Так что, на мой взгляд, он так же безопасен, как и зашифрованный домашний раздел на моем ноутбуке, что «достаточно хорошо» для обеспечения доступа к github. (что может отличаться от вашего мнения, конечно!)
Хью Перкинс

3
@GregB Не впадай в паранойю! :] Конечно, использование ключей, защищенных паролем, гораздо более безопасно, чем использование пароля без пароля, но утверждение, что ключ без пароля так же легко взломать, как и сохранение паролей в текстовом файле, является очевидной ложью. Я видел много руководств, которые поощряют пользователей использовать ключи, защищенные паролем, но я никогда не видел никаких утверждений, что использование их без паролей вовсе не безопасно. Плюс: некоторые системы не поддерживают решения для запоминания пароля ключа, введенного пользователями, и запрашивают его каждый раз, когда ключ используется. Что делает использование ключей SSH бессмысленным в этой ситуации.
Трейдер

4
Ради разговора, который отличается от первоначального вопроса, ключи SSH, безусловно, более криптографически безопасны, чем пароли, но эта безопасность подвергается риску, поскольку не шифрует ваши ключи SSH. Мой личный подход заключается в том, чтобы разблокировать мои ключи в начале дня с помощью агента SSH, который затем сохраняет расшифрованные ключи в памяти, так что мне не нужно повторно вводить пароль в течение дня. Как комментирует @Hugh Perkins, и я перефразирую, вы все знаете свои требования безопасности лучше, чем я / мы :).
ГрегБ

38

Если вы используете 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-agent вашего текущего сеанса, чтобы избежать необходимости многократного ввода пароля ключа.

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

1
Я сделал это, но для github.com: Хост github.com IdentityFile ~ / .ssh / github_rsa
Сары Суда

1
Если на вашем пути есть пробел, вы должны использовать кавычки: IdentityFile "/ C / My Keys / key"
r03

Я предпочитаю этот способ, потому что это позволило мне быстро подключить существующие ключи от другого ПК
Кирилл Гусятин

Мой .gitconfig имеет разделы. Под какими разделами я должен поместить этих хостов?
Стив Яковенко,

16

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

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

В Vista:

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

6
В моем случае я добавил HOME =% USERPROFILE%
игорь

1
Обратите внимание , что %HOMEPATH%не содержит букву диска, так что если ваш источник не на что C:вы должны предварять C:к %HOME%.
Грэм Перроу

set %HOME%=%HOMEPATH%работал на меня! Спасибо!!
тэн

7

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

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


Я сказал выше, что я использую Git для Windows и использую ssh.exe (упакованный с git) вместо putty. Должна быть какая-то стандартная практика для добавления закрытого ключа, я просто не могу понять, как это сделать. Хотя переключение программного обеспечения действительно может позволить мне войти в систему, должен быть способ сделать это при стандартной настройке Git, не так ли?
бинарные органические

Извините, я не работаю на Windows, только Linux. Но ключ должен быть в вашем агенте SSH. есть ли agent.exe или что-то в этом роде?
Деклан Шанаги

1
Да, настройка была на стороне Linux. Но, к сожалению, я должен работать на Windows. В папке git / bin на Windows есть несколько исполняемых файлов, связанных с ssh (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), но я не знаю, как их создать. Делать что-нибудь. Они просто моргают, открывая и закрывая окно. Я в тупике.
бинарные органические

8
Pageant действительно решает проблему для меня - у меня есть ярлык в папке «Пуск» моего меню Пуск ( 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)
Оуэн Блэкер

@OwenBlacker OMFG! Вы обязательно должны написать этот комментарий как полноразмерный ответ ! Это единственное решение , которое действительно помогло мне и решило мою проблему! Жаль, что я могу дать вам только +1! :]
Трейдер

6

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

Мой Git был установлен Chocolatey для 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кодировку файла.


Это помогло, но для тех, кто использует ключ id_dsa, вам также необходимо добавить «PubkeyAcceptedKeyTypes ssh-dss» под вашим хостом.
Майкл Руссо

4

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

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


Это было самое простое решение на моей машине с 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

4

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

  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 и проверьте наличие переменных среды, написав команду env | grep -i ssh.
  14. Вы должны быть все готово. Попробуйте клонировать протокол Git + SSH с вашего хоста.

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


3

При смешивании 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/*

Да, это очень раздражает. Естественно и легко клонировать репозиторий с github для Windows GUI, но при использовании git cui вне оболочки git не получилось. Интересно, как команда git в оболочке git работает с https url ...
hiroshi

для SSH префикс всегда git@{SERVER URL}?
nmz787

Да, насколько я когда-либо видел :)
IDisposable

Уже было это - все еще спрашивает меня все время
Ян Грейнджер

3

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

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

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


Для будущих читателей %USERPROFILE% is the equivalent of $HOMEэто не эквивалент $HOME. Многие плохо работающие Linux-приложения, портированные на Windows, относятся к ним одинаково, но к ним не следует относиться одинаково.
Мика Золту

Мика, не могли бы вы сообщить различия в намерениях для этого? Кроме того, даже с разными намерениями может показаться, что если все инструменты используют один в качестве другого, разве он не станет эффективно эквивалентным?
Эрик Блейд,

Инструменты, которые используются %USERPROFILE%в Windows так же, как и $HOMEв Linux, нарушают хорошо документированные рекомендации / рекомендации по разработке Windows (опубликованные MS давно и обновленные со временем). Есть много инструментов, которые делают это, но аргумент, который следует за ними, очень похож на аргумент «X писает в пуле, поэтому мы тоже должны». USERPROFILEгде пользователь хранит документы, которые он создает / сохраняет (например, диалог сохранения). APPDATAдля пользовательских данных конфигурации. LOCALAPPDATAдля кэшей для каждого пользователя и больших файлов. PROGRAMDATAдля конфигурации машины и кеша.
Мика Золту

В общем, единственными инструментами, которые плохо работают с USERPROFILE, являются инструменты, написанные разработчиками Linux и затем портированные на Windows. Как разработчик, вы, вероятно, используете многие из них, поэтому создается впечатление, что «все так делают», но за пределами экосистемы инструментария разработки большинство приложений Windows на самом деле являются хорошими гражданами. Даже Microsoft иногда делает ошибку, не помещая вещи в нужное место (это огромная компания), хотя в целом, когда вы указываете им, они прилагают усилия для решения проблемы и следуют рекомендациям ОС.
Мика Золту

1
(извините, ограничение количества символов StackExchange для комментариев). Вот более подробная информация о папках и краткое описание того, что входит в каждую. Есть и другие ресурсы, в том числе более расходные посты в блогах, но этот предлагает наиболее техническую точность: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Мика Золту

2

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

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


1
это. ughhhhhhhhhhhhh. до свидания 2 часа
Совок

1

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


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

1

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

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

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

Вопрос был конкретно о окнах. У меня на компьютере с Ubuntu работает git, но я не могу сказать, что установить GIT_SSH_COMMANDна моей машине с Windows.
Мяггард

1

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)


4
Я думаю, вам нужно исправить некоторые другие настройки, чтобы это работало (например, GIT_SSH установлен на TortoisePLink.exe, я думаю?), И хотя это работало для меня в прошлом, у меня часто возникают проблемы с этим на других машинах. :-(
Саймон Ист

Я получаю «Невозможно открыть файл» от Pageant :( Я знаю, что он настроен правильно, поскольку я использую его для TortoiseGit :(
Ян Грейнджер

1

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

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

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

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


0

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


0

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

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


0

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


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

0

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


Если отключено, проверка Settings... -> Network -> SSH clientустановлена ​​наC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Никита Босик

0

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

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

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

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

0

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

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


0

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

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


0

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


0

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

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

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

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


0

Мой опыт работы с 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%остановки он смотрит на домашнем диске удаленного.


0

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

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


0

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

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

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


0

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

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

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

Добро пожаловать в сбой сервера. На этот вопрос уже есть широко принятый ответ, принятый несколько лет назад. Продолжайте искать новые вопросы или те, которые могут быть значительно улучшены.
Мэтью Уэтмор

1
общепринятый ответ не сработал для меня, тогда как этот сработал. Я полагаю, что это может помочь кому-то узнать, что ключ должен быть добавлен к агенту ssh, и это можно сделать с помощью 2 строк инструкций
Matoeil
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.