Как заставить git не запрашивать фразу-пароль для ключа ssh на windows?

43

Я использую git bash, и я устанавливаю ssh-ключ, используя ssh-keygen, и каждый раз, когда я что-то делаю с git-репозиторием, спрашиваю у меня пароль /c/Users/jankiewj/.ssh/id_rsa. Есть ли способ отключить эту фразу-пароль.

jcubic
источник
Эта страница о serverfault может помочь serverfault.com/questions/194567/…
@Radoo, это не помогло.
'35

Ответы:

56

Вы можете запустить это в git bash:

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

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

добавление пароля в git bash в Windows

jcubic
источник
7
Я должен ввести его снова, как только я закрою git bash ... есть ли постоянное решение?
Черный,
@ Black это для каждой сессии bash, я вставил это .bashrcтак, что каждый раз, когда я открываю git bash, я получаю приглашение, и для этой сессии я готов.
18:36
Что именно вы положили в .bashrc? А где находится .bashrc?
Черный
Edit: nevermind, Вы должны создать файл yourselv, ~/.bashrcзатем ввести строки из вашего поста в него и сохранить, вот и все :) THX!
Черный
Вместо того, чтобы использовать строки выше, особенно в .bashrc, я бы использовал скрипт и поместил бы его в .bash_profileили .profile. Вот фрагмент основной части моего .bash_profile, это должно решить эту проблему для тех, кто все еще ищет ответ; это похоже на ответ ниже. В верхней части скрипта я загружаю свой .bashrc, который, если не применимо, просто опускаю. Примечание: вам нужно будет изменить ссылки на id_rsaто, что вы назвали своим закрытым ключом SSH, и, возможно, путь.
Rockin4Life33
9

Немного лучшим и постоянным решением является автоматический запуск 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

velval
источник
Я вставил свой простой код .bashrc, чем отличается ваше решение? В Windows bash каждая оболочка независима, поэтому при ее запуске агент никогда не запускается.
jcubic
Решение отлично работает, поместив код в .bashrc. Подсказка парольной фразы ssh только в первый раз. Спасла мою жизнь. Спасибо.
Бен Асмуссен
спасибо, это очень спасает мою жизнь.
Гумурух
Это действительно должен быть принятый ответ, поскольку он представляет собой решение, которое является постоянным и лучше соответствует тому, что, как я думаю, запрашивал ОП.
Ричард Д
Что мне делать, если я случайно ввел неправильный пароль при запуске? Изменить: На основании superuser.com/a/271673/647110 , вы можете ssh-add -Dудалить все ключи.
Нильс Гильермин
1

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

Посмотрите эту ссылку, чтобы узнать, как ее использовать ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Возможно, ssh-agentможет помочь вам как-то. Но не уверен, не зная вашей нынешней системы.

Дэвид Берн
источник
4
определенно не очень хороший ответ
Кеннет Селеста
Это был единственный способ решить эту проблему в Windows 10. После выполнения всех шагов «Генерации нового SSH-ключа и добавления его в руководство ssh-agent» github всегда спрашивал меня о парольной фразе. Даже после того, как добавил это. Такое поведение нарушало мой процесс развертывания maven, потому что на mvn release:performэтапе он пытается извлечь тег выпуска без предоставления ключевой фразы. Так что только очистка парольной фразы решила эту проблему.
Фернандо Мигель Карвалью
-3

Введите эту команду git в вашем репозитории " ssh-keygen -p ". После этого вам будет предложено ввести местоположение ключевого файла, старую парольную фразу и новую парольную фразу (которую можно оставить пустым, чтобы не иметь парольной фразы). Не вводите ничего в новый пароль, и он удалит ключевую фразу

Бхарти
источник
1
Оставлять пустой пароль небезопасно, и многие корпоративные разработчики не смогут иметь пустую фразу-пароль из-за ограничений. Это неудачный обходной путь, а не решение проблемы ОП.
cbaldan
возможно, хромой, но только для местного использования, Вкусный и быстрый ™
Джим П.