Как заставить 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.

Другие вопросы по тегам