Как заставить git не запрашивать фразу-пароль для ключа ssh на windows?
Я использую git bash, и я устанавливаю ssh-ключ, используя ssh-keygen, и каждый раз, когда я делаю что-то с репозиторием, git спрашивает у меня пароль для /c/Users/jankiewj/.ssh/id_rsa
, Есть ли способ отключить эту фразу-пароль.
6 ответов
Вы можете запустить это в git bash:
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
во второй команде он попросит ввести фразу-пароль, и все. Каждое дополнительное действие, которое вам нужно будет выполнить (что когда-то требовало парольную фразу) не будет запрашивать у вас парольную фразу (см. Пример на снимке экрана ниже):
Немного лучшим и постоянным решением является автоматический запуск ssh-agent при открытии git bash на окнах. Вы можете скопировать / вставить ниже в ваш.profile или.bashrc. Я предпочитаю ставить его на .profile
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
Это решение было взято из этой справочной статьи GitHub
TDLR: Для пользователей Windows:
- бегать
- нет
ssh-add ~/.ssh/id_rsa
Например, я постоянно вижу это:
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /c/Users/User/.ssh/id_rsa:
Identity added: /c/Users/User/.ssh/id_rsa (/c/Users/User/.ssh/id_rsa)
$ git pull
Enter passphrase for key 'C:\Users\User/.ssh/id_rsa':
Обратите внимание на несогласованные разделители путей: ssh-агент преобразует ~, используя разделители путей Unix, но вместо этого git использует разделители путей Windows. Учитывая, что путьid_rsa
файл используется в качестве ключа, это объясняет, почему кэш отсутствует.
- Еще одно отличие
C:/
вместо/c/
- Замечание по теме: когда git запрашивает парольную фразу, она не будет кэшироваться, поэтому вы можете вводить ее туда бесконечно. Попробуйте передать фразу only.
- Предположим, что в Windows
~
является «многозначным», поэтому лучше быть явным. -
ssh-add
смотрит на местоположения по умолчанию, например~/.ssh/id_rsa
. Предположим, что в Windows это неоднозначно. Явно передайте явно отформатированный путь вместо использования путей по умолчанию:-
ssh-add "C:\\Users\\<your user>/.ssh/id_rsa"
, то есть и в ответе @velval.
-
Я не уверен, что хочу порекомендовать его, но когда вы создадите Ключ и попросите установить пароль, просто нажмите ввод и пропустите пароль.
Посмотрите на эту ссылку, как использовать ssh-keygen
: https://help.github.com/articles/working-with-ssh-key-passphrases/
возможно ssh-agent
могу вам как-то помочь Но не уверен, не зная вашей нынешней системы.
Введите эту команду git в вашем репозитории "ssh-keygen -p". После этого вам будет предложено ввести местоположение ключевого файла, старую парольную фразу и новую парольную фразу (которую можно оставить пустым, чтобы не иметь парольной фразы). Не вводите ничего в новый пароль, и он удалит ключевую фразу
Keychain — это программа, которая разумно выполняет эту работу.
Его следует запускать из .bashrc (или его эквивалента), и он правильно настроит среду без каких-либо настроек, кроме тех ключей, которые он должен загрузить.
Это то, что я использую:keychain --quiet key1.pem key2.pem
Он понимает, что оболочка — Zsh, и она работала точно так же, когда я использовал Bash.