Почему git не может вспомнить мою фразу под Windows - PullRequest
124 голосов
/ 16 декабря 2008

Я только начал использовать git, и не могу вспомнить, чтобы я запомнил мою фразу-пароль. Я использую cmd.exe с повышенными правами, а мой git-хост - github, и я создал ключ ssh, подобный этому руководству на github

но я все еще получаю

*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':

Ответы [ 11 ]

194 голосов
/ 05 декабря 2010

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

Первое решение Предполагается Windows, msysgit и PuTTY.

  1. Установите msysgit и PuTTY в соответствии с инструкциями.
  2. (Необязательно) Добавьте PuTTY на свой путь. (Если вы этого не сделаете, любые ссылки на команды PuTTY ниже должны начинаться с полного пути к соответствующему исполняемому файлу.)
  3. Если вы еще этого не сделали, сгенерируйте хеш ключа, как указано в GitHub или в соответствии с указаниями вашего хоста Git.
  4. Опять же, если вы еще этого не сделали, сконвертируйте ваш ключ для использования с pageT.exe PuTTY, используя puttygen.exe . Инструкции содержатся в документации PuTTY, в этом полезном руководстве и в некоторых других местах в киберпространстве.
  5. Запустите PuTTY pageant.exe , откройте файл .ppk («Добавить ключ») и введите ключевую фразу для своего ключа.
  6. Доступ к диалоговому окну переменных среды Windows (щелкните правой кнопкой мыши «Компьютер», нажмите «Свойства», нажмите «Дополнительные параметры системы» или вкладку «Дополнительно», нажмите «Переменные среды»). Добавьте следующую переменную среды:

    GIT_SSH = C: \ полный \ путь \ к \ plink.exe

    Замените «C: \ full \ path \ to» на полный путь установки к PuTTY, где находится файл plink.exe. Вероятно, лучше всего добавить его в раздел «Пользовательские переменные». Также убедитесь, что путь, который вы используете для plink.exe, совпадает с путем, который вы используете для Pageant (pageant.exe). В некоторых случаях у вас может быть несколько установок PuTTY, потому что он может быть установлен вместе с другими приложениями. Использование plink.exe из одной установки и pageant.exe из другой может вызвать проблемы.

  7. Открыть командную строку.

  8. Если вы пытаетесь подключиться к репозиторию git, расположенному на Github.com, выполните следующую команду:

    plink.exe git@github.com

    Если репозиторий git, к которому вы пытаетесь подключиться, размещен где-то еще, замените git@github.com на соответствующее имя пользователя и URL. (Предполагая Github) Вы должны быть проинформированы о том, что ключ хоста сервера не кэшируется, и спросить, доверяете ли вы ему. Ответ с y . Это добавит ключ хоста сервера в список известных хостов PuTTY. Без этого шага команды git не будут работать должным образом. После нажатия Enter, Github сообщает, что Github не предоставляет доступ к оболочке. Это нормально ... нам это не нужно. (Если вы подключаетесь к другому хосту, и он дает вам доступ к оболочке, вероятно, лучше завершить соединение, не делая ничего другого.)

  9. Все готово! Команды Git теперь должны работать из командной строки. Возможно, вы захотите, чтобы pageant.exe автоматически загружал ваш файл .ppk во время загрузки , в зависимости от того, как часто он вам понадобится.

Второе решение Предполагается Windows, msysgit и TortoiseGit.

TortoiseGit поставляется с исполняемыми файлами PuTTY и специально модифицированной версией plink (называемой TortoisePlink.exe), которая облегчит работу.

  1. Установите msysgit и TortoiseGit в соответствии с инструкциями.
  2. Если вы этого еще не сделали, то сгенерируйте хеш ключа, как указано на GitHub или на вашем хосте Git.
  3. Опять же, если вы еще этого не сделали, конвертируйте ваш ключ для использования с pageant.exe TortoiseGit, используя TortoiseGit's puttygen.exe . Инструкции содержатся в документации PuTTY, в полезном руководстве, связанном с первым решением, и в нескольких других местах в киберпространстве.
  4. Запустите TortoiseGit pageant.exe , откройте файл .ppk («Добавить ключ») и введите ключевую фразу для своего ключа.
  5. Доступ к диалоговому окну переменных среды Windows (щелкните правой кнопкой мыши «Компьютер», нажмите «Свойства», нажмите «Дополнительные параметры системы» или вкладку «Дополнительно», нажмите «Переменные среды»). Добавьте следующую переменную среды:

    GIT_SSH = C: \ полный \ путь \ к \ TortoisePlink.exe

    Замените «C: \ full \ path \ to» на полный путь установки к TortoiseGit, где находится TortoisePlink.exe. Вероятно, лучше всего добавить его в раздел «Пользовательские переменные». Также убедитесь, что путь, который вы используете для TortoisePlink.exe, совпадает с путем, который вы используете для Pageant (pageant.exe). В некоторых случаях у вас может быть несколько установок PuTTY, потому что он может быть установлен вместе с другими приложениями. Использование TortoisePlink.exe из установки TortoiseGit и pageant.exe из другой установки другого приложения (или из автономной установки PuTTY) может вызвать проблемы.

  6. Все готово! Команды Git теперь должны работать из командной строки. При первой попытке подключения к вашему git-репозиторию вы, вероятно, будете проинформированы о том, что ключ хоста сервера не кэширован, и спросит, доверяете ли вы серверу. Нажмите «Да». (Это TortoisePlink.exe в действии.)

    Возможно, вы захотите, чтобы pageant.exe автоматически загружал ваш файл .ppk во время загрузки , в зависимости от того, как часто он вам понадобится.

Третье решение Предполагается окно, msysgit и собственная командная строка.

  1. Установить msysgit
  2. Обязательно разрешите использовать git в командной строке MS-DOS
  3. Пробег start-ssh-agent
  4. Введите парольные фразы SSH
  5. Все готово! Команды Git теперь должны работать в собственной командной строке.
18 голосов
/ 14 марта 2010

Для тех, кому нужны более подробные инструкции, см. Эту страницу: http://help.github.com/working-with-key-passphrases/

12 голосов
/ 21 августа 2014

Одно дополнительное решение через 5 лет, 8 месяцев и 6 дней после того, как вопрос был опубликован, не будет плохой идеей.

ПРИМЕЧАНИЕ: Предполагается, что вы используете компьютер с ОС Windows.

  1. Загрузите git-credential-winstore .
  2. Запусти! Если в переменной окружения PATH есть GIT, он должен просто работать. Если нет, запустите git-credential-winstore -i C:\Path\To\Git.exe.

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


Только для вашего сведения ... Ваши учетные данные хранятся в хранилище учетных данных Windows

Где вы храните мои учетные данные?

Это приложение просто использует существующее хранилище учетных данных Windows для хранения ваших учетных данных. Вы можете просмотреть сохраненные учетные данные, перейдя в Панель управления> Учетные записи пользователей> Диспетчер учетных данных и выбрав «Учетные данные Windows». Записи, начинающиеся с git: взяты из git-credential-winstore.

10 голосов
/ 16 декабря 2008

Это не мерзавец, это ssh.

Я не работаю с Windows, но у ssh есть концепция агента, которая может запомнить парольные фразы для вас. В OS X эта функция включена по умолчанию. Ваш ssh-клиент, вероятно, имеет способ настроить это.

9 голосов
/ 02 апреля 2018

В случае, если вы используете Git bash в Windows , вы можете выполнить следующее:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

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

adding pass phrase in Git bash on Windows

Надеюсь, это поможет.

Приветствия

Guy.

7 голосов
/ 14 октября 2010

[править - неправильно прочитанный вопрос, это ответ на связанную проблему. оставляя перефразированную версию для потомков]

В моем случае я пытался подтолкнуть к репо, который был размещен на одном из наших серверов. Всякий раз, когда я пытался сделать push, git спрашивал у меня мой пароль (nb - пароль, а не пароль для моего закрытого ключа).

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

Вот команда для добавления вашего открытого ключа на сервер. Предполагается, что пользователь git является пользователем на сервере.

cat .ssh/id_rsa.pub | ssh git@GIT_MASTER_IP 'cat >> .ssh/authorized_keys'

Этого же можно добиться, войдя на сервер и добавив свой открытый ключ в файл вручную по адресу ~/.ssh/authorized_keys

7 голосов
/ 16 декабря 2008

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

ssh-agent также может работать. Попробуйте запустить его и посмотрите, запомнит ли он вашу фразу-пароль.

4 голосов
/ 22 октября 2012

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

GitHub предоставляет очень полезный установщик, который делает все красиво и легко: https://help.github.com/articles/caching-your-github-password-in-git/

3 голосов
/ 28 ноября 2012

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

Просто создайте файл _netrc в каталоге вашего профиля пользователя - т.е. в Windows 7 это будет C:\Users\MyName\_netrc. Этот файл будет хранить вашу регистрационную информацию в следующем формате:

machine bitbucket.org login thisismyname password p455w0rD
machine bitbucket.org login another_account password pwdpwdPWd
machine github.com login thisismynameagain password p455w0rD

Я использую TortoisePLink в качестве клиента SSH, и он работает безупречно.

1 голос
/ 03 апреля 2018

Вы можете создать файл .bashrc в домашнем каталоге вашего пользователя, например C:/Users/youruser, и поместить туда:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

Этот скрипт выполняется каждый раз после запуска bash. Поэтому вам нужно будет ввести пароль только один раз, когда git-bash запущен!

В некоторых версиях bash требуется .bash_profile файл вместо .bashrc, поэтому на всякий случай клон .bashrc:

copy .bashrc .bash_profile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...