Почему git не может запомнить мою кодовую фразу под Windows

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

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

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

Ответ 1

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

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

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

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

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

  • Откройте командную строку.

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

    plink.exe git @github.com

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

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

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

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

  • Установите msysgit и TortoiseGit в соответствии с инструкциями.
  • Если вы еще этого не сделали, создайте хэш ключа, как указано в GitHub, или как указано вашим хостом Git.
  • Опять же, если вы еще этого не сделали, конвертируйте свой ключ для использования с TortoiseGit pageant.exe, используя TortoiseGit puttygen.exe. Инструкции содержатся в документации PuTTY, в полезном руководстве, связанном с первым решением, и в нескольких других местах в киберпространстве.
  • Запустите TortoiseGit pageant.exe, откройте свой .ppk файл ( "Добавить ключ" ) и предоставьте ключевую фразу для вашего ключа.
  • Откройте диалоговое окно переменных среды 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), вероятно, вызовет у вас проблемы.

  • Все сделано! Теперь команды Git должны работать из командной строки. В первый раз, когда вы пытаетесь подключиться к вашему репозиторию Git, вам, вероятно, будет сообщено, что ключ сервера сервера не кэширован и спрашивает, доверяете ли вы серверу. Нажмите "Да". (Это действие TortoisePlink.exe в действии.)

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

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

  • Установить msysgit
  • Обязательно разрешите Git использовать в командной строке MS-DOS
  • Выполнить start-ssh-agent
  • Введите кодовые фразы SSH
  • Все сделано! Команды Git теперь должны работать в командной строке.

Ответ 3

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

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

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

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


Просто для ваших знаний... Ваши учетные данные хранятся в хранилище учетных данных Windows

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

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

Ответ 4

Это не git, это ssh.

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

Ответ 5

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

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

Ответ 6

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

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

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

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

cat .ssh/id_rsa.pub | ssh [email protected]_MASTER_IP 'cat >> .ssh/authorized_keys'

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

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

adding pass phrase in Git bash on Windows

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

Ура,

Guy.

Ответ 10

можно попробовать добавить -k arg, когда вы это сделаете;

ssh-add -k ~/.ssh/id_rsa

Ответ 11

Вы можете создать файл .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 вместо файла .bashrc требуется файл .bash_profile, так что на всякий случай .bashrc:

copy .bashrc .bash_profile