Git продовжує просити мене про свою ключову фразу ssh


537

Я створив ключі згідно з інструкціями в навчальному посібнику github, зареєстрував їх у github і спробував явно використовувати ssh-агент - все ж git продовжує просити мене про свою парольну фразу кожен раз, коли я намагаюся зробити тягнути чи натиснути.

Що може бути причиною?


Відповіді:


1038

Після запуску агента SSH:

eval $(ssh-agent)
  1. Ви повинні додати свій приватний ключ до нього:

    ssh-add
    

    Це лише один раз запитає вашу парольну фразу, і тоді вам буде дозволено натиснути, за умови завантаження відкритого ключа в Github.

  2. Щоб назавжди зберегти ключ на macOS:

    ssh-add -K  
    

    Це збережеться після закриття та повторного відкриття, зберігаючи його у брелок користувача.


16
вийдіть із сервера, вставте назад, запустіть git pull, ще раз запросіть мене на пароль.
cyber8200

35
ssh-add -Kзбережеться після закриття та повторного відкриття, зберігаючи його в брелок користувача.
Кірк

72
@Kirk ssh-add -Kдає наступне:unknown option -- K usage: ssh-add [options] [file ...] Options: -l List fingerprints of all identities. -L List public key parameters of all identities. -k Load only keys and not certificates. -c Require confirmation to sign using identities -t life Set lifetime (in seconds) when adding identities. -d Delete identity. -D Delete all identities. -x Lock agent. -X Unlock agent. -s pkcs11 Add keys from PKCS#11 provider.
Sandeep C

13
Мені все одно пропонується ввести парольну фразу незалежно.
ІгорГанапольський

21
-Kє специфічним для яблук. Дивіться help.github.com/articles/…
bkdir

238

Це трапляється зі мною після перезапуску після оновлення з OS X El Capitan (10.11) до macOS Sierra (10.12). Thessh-addРішення працював тимчасово , але не буде зберігатися через іншу перезавантаження.

Постійним рішенням було відредагувати (або створити) ~/.ssh/configта включити UseKeychainпараметр.

Host *
    UseKeychain yes

Пов’язано: macOS продовжує просити мою SSH-фразу з моменту оновлення до Сьєрри


1
працював для мене спасибі ... я зробив ... ssh-add -K /Users/***/.ssh/git/id_rsaале він все ще не працював після перезавантаження терміналу ... дякую.
nawlbergs

2
Хочете, чому це трапляється? Прочитайте технічну записку щодо змін в OpenSSH developer.apple.com/library/content/technotes/tn2449/…
samwize

62

Якщо ви намагалися, ssh-addі вам все ще пропонується ввести свою парольну фразу, тоді спробуйте скористатисяssh-add -K . Це додасть вашу парольну фразу до вашого брелка.

Оновлення: якщо ви використовуєте macOS Sierra, вам, ймовірно, потрібно зробити ще один крок, оскільки вищезгадане може більше не працювати. Додайте до свого ~/.ssh/config:

Host *
  UseKeychain yes

2
І все-таки підказує мені пройти фразу.
ІгорГанапольський

@IgorGanapolsky Ви використовуєте macOS Sierra? Якщо так, перевірте, що я щойно додав до відповіді. Я сподіваюся, що це допомагає.
Дарріл Янг

2
Так, я на Сьєррі. Однак ось рядок, який працював і для мене: AddKeysToAgent так
ІгорГанапольський

1
Це також працює з BitBucket Cloud. У мене виникли проблеми в GitKraken, і це вирішило мої проблеми.
Малахій

54

Я б спробував таке:

  1. Запустіть GitBash
  2. Відредагуйте ~/.bashrcфайл
  3. Додайте у файл наступні рядки

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  1. Збережіть і закрийте файл
  2. Закрийте GitBash
  3. Повторно відкрийте GitBash
  4. Введіть свою парольну фразу

4
Для подальшого ознайомлення це також працює з zsh. Просто додайте це до.zshrc
Арда

2
Я вважаю , що це передбачає , що файл_ключа називається id_rsa. Якщо у вас є власне ім’я, ви повинні використовувати напр. /usr/bin/ssh-add ~/.ssh/custom_filename
Juha Untinen

2
Чи можете ви пояснити, що відбувається з цим сценарієм?
LeeR

2
@Lee, він запускає ssh-агент, якщо він ще не запущений, і це гарантує не запитувати вам ssh-парольну фразу кожного натискання (більш-менш).
Роланд

Це просто запускає ssh-агент і додає ключ при кожному вході. Вам все одно доведеться вводити пароль під час кожного входу. Так, наприклад, якщо у вас є сценарії ssh-ing та виконуються команди GIT, це, на жаль, зовсім не корисно.
траїноз


27

Спробуйте додати це до ~ / .ssh / config :

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

... припускаючи, що ваш приватний ключ називається id_rsa


11
UseKeychain yes діє лише для mac
Oz123,

3
@ Oz123, що еквівалент вікнам
ІгорГанапольський

@ Oz123 Я думаю , що еквівалентно на вікнах AddKeysToAgent та перевірити цю відповідь stackoverflow.com/questions/52423626 / ...
fedeteka

6

У мене було подібне питання, але інші відповіді не вирішили моєї проблеми. Я думав, що продовжу і опублікую це на випадок, якщо хтось інший має такі гнучкі налаштування, як я.

Виявляється, у мене було кілька клавіш, і Git спочатку використовував неправильну. Це підкаже мені свою парольну фразу, і я введу її, тоді Git використовує інший ключ, який би працював (що мені не потрібно було вводити пароль).

Я просто видалив ключ, який він використовував, щоб запропонувати мені ввести парольну фразу, і тепер вона працює!


5

Здається, у вас можуть виникнути проблеми із самим агентом SSH. Я б спробував це усунути.

1) Ви робили ssh-add, щоб додати свій ключ до SSH?

2) Чи закриваєте ви вікно терміналу між використанням, адже якщо ви закриєте вікно, вам доведеться ввести пароль ще раз, коли ви його знову відкриєте.


2
Було б добре додати інформацію про те, як вирішити першу проблему Джефф Веллінг.
ranu

5

Якщо вищезгадані рішення для мене не працюють, одне, що потрібно перевірити, це те, що у вас є також відкритий ключ (як правило, зазвичай) id_rsa.pub ). Це незвично, але це було причиною для мене.

Щоб створити ваш відкритий ключ із приватного ключа:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

1

Я пробую різні рішення, але нічого не допомагає. Але ці кроки ( My GitBash SSH-середовище завжди запитує мою парольну фразу, що я можу зробити? ) З швів Bitbucket.com працює добре:

Ідея така:

  1. ви створюєте ~/.bashrcфайл

  2. додати наступний сценарій:

    SSH_ENV=$HOME/.ssh/environment
    
    # start the ssh-agent
        function start_agent {
        echo "Initializing new SSH agent..."
        # spawn ssh-agent
        /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
        echo succeeded
        chmod 600 "${SSH_ENV}"
        . "${SSH_ENV}" > /dev/null
        /usr/bin/ssh-add
    }
    
    if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
            start_agent;
        }
    else
        start_agent;
    fi
    
  3. повторно запустити Bash


1

Ще одне можливе рішення, яке не згадується вище, - перевірити ваш пульт за допомогою наступної команди:

git remote -v

Якщо пульт не починається з git, а починається з https, ви можете змінити його на git, дотримуючись наведеного нижче прикладу.

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.