Я только начал использовать git, и я не могу заставить его запомнить мою кодовую фразу. Я использую cmd.exe с повышенными правами, а мой хост git - github, и я создал ssh-ключ, как это руководство на github
но я все еще получаю
*\subnus.mvc>git push origin master
Enter passphrase for key '/c/Users/Subnus/.ssh/id_rsa':
GIT_SSH
в своей среде (при необходимости), и git / ssh запомнит вашу парольную фразу через ssh-agent. См. Мой ответ ниже для получения более подробных инструкций.Ответы:
Я понимаю, что этот вопрос возникает два года назад, но у меня была такая же проблема, и несколько ответов здесь не полностью ответили на вопрос для меня. Вот два пошаговых решения, в зависимости от того, используете ли вы TortoiseGit в дополнение к msysgit или нет.
Первое решение Предполагает Windows, msysgit и PuTTY.
Откройте диалоговое окно переменных среды 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 не предоставляет доступ к оболочке. Ничего страшного ... нам это не нужно. (Если вы подключаетесь к какому-либо другому хосту, и он дает вам доступ к оболочке, вероятно, лучше разорвать связь, не делая ничего другого.)
Второе решение предполагает Windows, msysgit и TortoiseGit.
TortoiseGit поставляется с исполняемыми файлами PuTTY и специально модифицированной версией plink (называемой TortoisePlink.exe), которая упрощает работу.
Откройте диалоговое окно переменных среды 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 и собственной командной строки.
start-ssh-agent
источник
start-ssh-agent
в командной строке, чтобы он сохранил парольную фразу SSH.Каждый раз, когда я настраиваю новый рабочий стол, я забываю эти инструкции, поэтому добавляю сюда еще один ответ, поскольку натыкаюсь на него одинаково часто!
Быстрые шаги для таких же нетерпеливых пользователей, как я
OpenSSH Authentication Agent
службу и заставьте ее запускаться автоматически.ssh-add
в командной строке.$ENV:GIT_SSH=C:\Windows\System32\OpenSSH\ssh.exe
в сеанс или навсегда в пользовательскую среду.Подробные шаги: обзор
Windows уже некоторое время поставляется с OpenSSH. Он включает в себя все необходимые биты для работы ssh вместе с Git, но, похоже, ему все еще требуется некоторый TLC, прежде чем он будет работать на 100% безупречно. Вот шаги, которые я успешно выполнил в версии Windows 10.0.18362.449 (вы можете увидеть свою версию Windows 10, открыв оболочку cmd.exe и набрав
ver
).Я предполагаю, что у вас уже есть настройка ключа SSH, и он находится по адресу
~/.ssh/id_rsa
Включите службу ssh-agent на вашем компьютере с Windows 10.
OpenSSH Authentication Agent
услугу в списке.OpenSSH Authentication Agent
службу и выберите «Свойства».Startup type:
ToAutomatic
.Start
кнопку, чтобы изменить статус службы наRunning
.OK
, и закройте приложение «Службы».Добавьте свой ключ в
ssh-agent
ssh-agent
:ssh-add
(вы можете добавить путь к вашему ключу в качестве первого аргумента, если он отличается от значения по умолчанию) .Попробуйте Git + SSH
git clone git@github.com:octocat/Spoon-Knife
Задайте
GIT_SSH
переменную средыВ любом сеансе вы можете просто установить эту переменную среды, и запрос вашей парольной фразы перестанет появляться, а ssh будет использовать
ssh-agent
от вашего имени. В качестве альтернативы вы можете навсегда установить парольную фразу в среду своего пользователя.Чтобы установить только
GIT_SSH
в текущей оболочке:ssh.exe
:$Env:GIT_SSH=$((Get-Command -Name ssh).Source)
Установить
GIT_SSH
навсегдаVariable name:
поле в GIT_SSHVariable value:
поле значение path-to-ssh.exe (обычноC:\Windows\System32\OpenSSH\ssh.exe
).Обратите внимание, что это, вероятно, изменится с появлением новых шагов / процедур по мере развития Windows 10 и по мере того, как я узнаю больше. Я постараюсь обновлять это, жду отзывов в комментариях.
источник
Если вы используете Git bash под Windows, вы можете выполнить следующее:
он запросит кодовую фразу во второй команде, и все. Каждое дополнительное действие, которое вам нужно будет выполнить (которое когда-то требовало парольной фразы), не будет запрашивать у вас парольную фразу (см. Пример на снимке экрана ниже):
источник
Для тех, кому нужны более подробные инструкции, см. Эту страницу: http://help.github.com/working-with-key-passphrases/
источник
msysgit
оболочки.notepad ~/.profile
и скопировал, вставил контент по этой ссылке, перезапустил Git Bash, ввел свой пароль, получил прибыль ...Одно дополнительное решение через 5 лет, 8 месяцев и 6 дней после публикации вопроса было бы неплохой идеей.
ПРИМЕЧАНИЕ. Предполагается, что вы используете компьютер с Windows.
PATH
переменной окружения, он должен работать. Если нет, бегиgit-credential-winstore -i C:\Path\To\Git.exe
.В следующий раз, когда вы попытаетесь выполнить фиксацию в репозитории, вам будет предложено ввести свои учетные данные. Так и должно быть. У вас больше не будут спрашивать ваши учетные данные, пока вы не измените свой пароль.
Просто для вашего сведения ... ваши учетные данные хранятся в хранилище учетных данных Windows
источник
Если вы установили пароль для ключевого файла, вам всегда нужно будет вводить этот пароль при подключении. Если вы создадите ключ без пароля, вам не придется каждый раз вводить его, однако любой, у кого есть доступ к вашему ключевому файлу, теперь может подключиться к вашей учетной записи github.
ssh-agent также может работать. Попробуйте запустить его и посмотрите, запомнит ли он вашу кодовую фразу.
источник
ssh-keygen -p
должно позволить OP не устанавливать кодовую фразу[edit - неправильно прочитал вопрос, это ответ на связанную проблему. оставив перефразированную версию для потомков]
В моем случае я пытался отправить репо, размещенное на одном из наших серверов. Всякий раз, когда я пытался выполнить push, git запрашивал у меня мой пароль (nb - пароль, а не кодовую фразу для моего закрытого ключа).
Добавив свой открытый ключ к авторизованным ключам на сервере, я смог получать запросы на этот сервер без пароля. И поскольку на моем закрытом ключе не было кодовой фразы (что, кстати, плохая практика!), Мне вообще не нужно было ничего вводить.
Вот команда для добавления вашего открытого ключа на сервер. Предполагается, что пользователь
git
является пользователем сервера.Вы можете добиться того же, войдя на сервер и вручную добавив свой открытый ключ в файл по адресу
~/.ssh/authorized_keys
источник
Я понимаю, что это запоздало на несколько лет, но я наткнулся на этот вопрос, пытаясь найти его решение, и нашел что-то, что подходит для всех уровней знаний, поэтому я подумал, что поделюсь.
GitHub предоставляет очень полезный установщик, который все упрощает и упрощает: https://help.github.com/articles/caching-your-github-password-in-git/
источник
Предположим, вы хотите использовать чистый Git Bash решение без использования TortoiseGit или PuTTY. Кроме того, вы не хотите постоянно хранить свои парольные фразы, поскольку это почти то же самое, как если бы вы изначально сгенерировали свой SSH-ключ без ключевой фразы. Но вы все равно хотите использовать кеширование.
Для кеширования используется
ssh-agent
процесс, который включен в дистрибутив Git Bash. По умолчанию этот процесс не запускается, поэтому его нужно запустить в первую очередь. Для кэширования любых ключей SSH их следует добавить в этот процесс с помощьюssh-add
команды, которая предложит вам ключевую фразу и сохранить ее в памяти.Недостатки других решений:
ssh-agent
как в статье GitHub, пароль запрашивается с самого начала, когда вы запускаете Git Bash, независимо от того, нужно ли вам использовать свой SSH-ключ в этом сеансе или нет. Если вы сегодня работаете со своим локальным репо, вы, вероятно, захотите предоставить парольную фразу только тогда, когда это действительно необходимо (например, при взаимодействии с удаленным репо).ssh-agent
лайк в статье GitLab,eval $(ssh-agent -s)
вероятно, вы устали вводить это каждый раз. Скорее всего, в конечном итоге вы добавили эти две строки в свой.bashrc
конфигурацию для автоматического запуска. Недостатки те же, что и выше, плюс еще один: каждый раз, когда вы запускаете новый терминал Git Bash, вы получаете дополнительный процесс ssh-agent (сценарий bash GitHub проверяет, запущен ли этот процесс).Итак, это решение для тех, кто задается вопросом, как заставить Git Bash запрашивать кодовую фразу только один раз за сеанс Windows и только тогда, когда это действительно необходимо. Это похоже на поведение управления паролями в GnuPG. автоматическое подписание с использованием
default-cache-ttl
.Настройка SSH для однократного запроса парольной фразы при необходимости только с использованием Git Bash
Во-первых, мы хотим, чтобы
ssh-agent
при запуске оболочки Git Bash автоматически запускался . Для этого мы будем использовать модифицированный скрипт GitHub , поскольку он проверяет, запущен ли уже процесс, но мы не хотим, чтобы онssh-add
сразу запускал ключи. Этот скрипт переходит в ваш~/.bashrc
или~/.profile
или~/.bash_profile
(~
это домашний каталог вашего пользователя, напримерC:\Users\Username
- запустите,cd ~
а затемpwd
Git Bash распечатает его):### Start ssh-agent env=~/.ssh/agent.env agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; } agent_start () { (umask 077; ssh-agent >| "$env") # use -t here for timeout . "$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 fi unset env
Теперь отредактируйте или создайте
~/.ssh/config
файл и добавьтеAddKeysToAgent
параметр для каждого раздела хоста, который вы хотите включить кеширование (вы также можете включить его глобально, поместив директиву в начало файла перед всеми объявлениями хоста):# GitHub.com Host github.com Preferredauthentications publickey IdentityFile ~/.ssh/id_ed25519_github AddKeysToAgent yes # GitLab.com Host gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/id_ed25519_gitlab AddKeysToAgent yes
Максимальное время жизни по умолчанию - вечно или до тех пор, пока
ssh-agent
процесс не будет убит (вручную из диспетчера задач или когда ваш компьютер выключен). Если вы хотите использовать конечный тайм-аут, вы можете установить его с помощью параметра ssh-agent-t
. Измените строку в сценарии bash из первого шага выше, например, на 30 минут жизни ключевого кеша:(umask 077; ssh-agent -t 30m >| "$env")
См. Здесь другие квалификаторы формата времени.
источник
Вы можете создать
.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
, поэтому на всякий случай clone.bashrc
:источник
можете попробовать добавить -k arg, когда вы это сделаете;
источник