Як зробити так, щоб git не вимагав проходити фразу для ключа ssh у Windows?


43

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


Ця сторінка на сервері за замовчуванням може допомогти serverfault.com/questions/194567/…

@Radoo це не допомогло.
jcubic

Відповіді:


56

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

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

він попросить пропустити фразу в другій команді, і все. Кожна додаткова дія, яку вам потрібно буде виконати (яка колись вимагає пропустити фразу), не запитає вас про фразову фразу (див. Приклад на знімку екрана нижче):

додавання пропускної фрази в git bash для Windows


7
Я маю ввести його ще раз, як тільки закриваю git bash ... чи є постійне рішення?
Чорний

@Black це за баш-сесію, я вкладаю це .bashrcтак, щоразу, коли я відкриваю git bash, я отримую підказку, і для цього сеансу я все налаштований.
jcubic

Що саме ви ставите в .bashrc? А де .bashrc?
Чорний

Редагувати: неважливо, ви повинні створити файл yourselv, ~/.bashrcа потім ввести в нього рядки з посади і зберегти, ось це :) THX!
Чорний

Замість використання рядків, наведених вище, особливо у програмі .bashrc, я б використав сценарій та розмістив його в .bash_profileабо .profile. Ось фрагмент основної моєї частини .bash_profile, він повинен вирішити це для всіх, хто все ще шукає відповіді; це схоже на відповідь нижче. У верхній частині сценарію я завантажую свій .bashrc, який, якщо не застосовується, просто залишає це. Примітка: вам потрібно буде змінити посилання на id_rsaте, що ви назвали вашим приватним ключем SSH, а може бути і шлях.
Rockin4Life33

9

Трохи кращим і постійним рішенням є автоматичний запуск ssh-агента при відкритті git bash на windows. Ви можете скопіювати / вставити наведене нижче у свій .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


Я вклав свій простий код .bashrc, чим ваше рішення відрізняється? У Windows bash кожна оболонка є незалежною, тому агент ніколи не працює при запуску оболонки.
jcubic

Рішення працює чудово, вводячи код у .bashrc. Підказування парольної фрази ssh лише в перший раз. Врятувало моє життя. Дякую.
Бен Асмуссен

дякую, що дуже рятує моє життя.
gumuruh

Це дійсно має бути прийнятою відповіддю, оскільки вона пропонує рішення, яке є наполегливим і краще відповідає тому, що, на мою думку, просить ОП.
Річард Д

Що робити, якщо випадково набрав неправильний пароль при запуску? Редагування: На основі superuser.com/a/271673/647110 ви можете ssh-add -Dвидалити всі клавіші.
Нілс Гільєрмін

1

Я не впевнений, чи хочу його рекомендувати, але коли ви створюєте ключ і просите встановити пароль, просто натисніть клавішу Enter і пропустіть пароль.

Перегляньте це посилання щодо використання ssh-keygen: https://help.github.com/articles/working-with-ssh-key-passphrases/

Можливо, ssh-agentможе вам якось допомогти. Але не впевнений, не знаючи поточної системи.


4
напевно не гарна відповідь
Кеннет Селесте

Це було єдиним способом вирішити це в Windows 10. Після виконання всіх кроків "Створення нового ключа SSH та додавання його до посібника з github" ssh-agent ", він завжди просив мене пройти парольну фразу. Навіть після додавання його. Така поведінка порушує мій потік розгортання Maven, оскільки на mvn release:performфазі він намагається перевірити тег випуску, не надаючи парольну фразу. Тож лише очищення парольної фрази вирішило це питання.
Фернандо Мігель Карвальо

-3

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


1
Залишити порожній пароль небезпечно, і багато корпоративних розробників не зможуть мати порожню парольну фразу через обмеження. Це кульгаве вирішення, а не вирішення питання щодо ОП.
cbaldan

Кульга, мабуть, але лише для місцевого вживання, Смачна і експедитивна ™
Jim P
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.