Как предотвратить ввод пароля для дешифрования закрытого ключа каждый раз при использовании Git Bash в Windows?

У меня есть служба автоматического построения, которая загружается из частного хранилища git. Проблема в том, что когда он пытается клонировать репозиторий, ему необходимо предоставить пароль, потому что он не запоминается; поэтому, поскольку нет человеческого взаимодействия, он всегда ждет пароля. Как я могу заставить его запомнить из id_rsa.pub?

Ответ 1

Для пользователей Windows просто обратите внимание на то, что я настраиваю среду Git Bash для входа в систему один раз, когда я запускаю ее. Я редактирую свой файл ~/.bashrc:

eval `ssh-agent`
ssh-add

Поэтому, когда я запускаю Git Bash, он выглядит так:

Welcome to Git (version 1.7.8-preview20111206)
(etc)
Agent pid 3376
Enter passphrase for /c/Users/starmonkey/.ssh/id_dsa:
Identity added: /c/Users/starmonkey/.ssh/id_dsa (/c/Users/starmonkey/.ssh/id_dsa)

И теперь я могу ssh на другие серверы без регистрации каждый раз.

Я знаю, что это старый вопрос, но я пришел сюда сегодня из поиска Google, поэтому надеюсь, что это будет полезно для других.

Ответ 2

В этом ответе объясняется, как получить имя пользователя и пароль GitHub для сохранения на постоянной основе, а не ключевую фразу ключевого слова SSH.

В окнах просто запустите  $ git config --global credential.helper wincred

Это означает, что при следующем нажатии вы вводите свое имя пользователя и пароль, как обычно, но они будут сохранены в учетных данных Windows. После этого вам не придется вводить их снова.

Как и в случае, http://www.tilcode.com/push-github-without-entering-username-password-windows-git-bash/

Ответ 3

Если я правильно понял вопрос, вы уже используете авторизованный SSH-ключ в службе сборки, но вам не нужно вводить кодовую фразу для каждого клона?

Я могу представить два способа сделать это:

  • Если служба сборки запущена в интерактивном режиме: перед запуском службы построения запустите ssh-agent с достаточно длинным таймаутом (-t). Затем используйте ssh-add (msysGit должен иметь их), чтобы добавить все секретные ключи, которые вам нужны, прежде чем запускать службу сборки. Вам все равно придется вводить все фразы, но только один раз за запуск службы.

  • Если вы хотите вообще не вводить кодовые фразы, вы всегда можете удалить кодовые фразы из ключей ssh, как описано в https://serverfault.com/questions/50775/how-do-i-change-my-private-key-passphrase, установив пустую новую кодовую фразу. Это должно полностью удалить запрос пароля, но еще менее безопасно, чем предыдущий вариант.

Ответ 4

Я предпочитаю не вводить свою кодовую фразу ssh при открытии новых терминалов; к сожалению, решение starmonkey требует ввода пароля для каждой сессии. Вместо этого у меня есть это в моем .bash_profile:

# Note: ~/.ssh/environment should not be used, as it
#       already has a different purpose in SSH.

env=~/.ssh/agent.env

# Note: Don't bother checking SSH_AGENT_PID. It not used
#       by SSH itself, and it might even be incorrect
#       (for example, when using agent-forwarding over SSH).

agent_is_running() {
    if [ "$SSH_AUTH_SOCK" ]; then
        # ssh-add returns:
        #   0 = agent running, has keys
        #   1 = agent running, no keys
        #   2 = agent not running
        ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ]
    else
        false
    fi
}

agent_has_keys() {
    ssh-add -l >/dev/null 2>&1
}

agent_load_env() {
    . "$env" >/dev/null
}

agent_start() {
    (umask 077; ssh-agent >"$env")
    . "$env" >/dev/null
}

if ! agent_is_running; then
    agent_load_env
fi

# if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need
# to paste the proper path after ssh-add
if ! agent_is_running; then
    agent_start
    ssh-add
elif ! agent_has_keys; then
    ssh-add
fi

unset env

Это будет помнить мою кодовую фразу для новых сеансов терминала; Мне нужно только ввести его один раз, когда я открою свой первый терминал после загрузки.

Я хотел бы отдать должное тому, где я получил это, это модификация кого-то другого, но я не могу вспомнить, откуда она взялась. Спасибо анонимному автору!

Ответ 6

Когда я пытаюсь нажать мой код, я получил ошибку ниже:

$ git push origin dev

remote: Too many invalid password attempts. Try logging in through the website with your password.
fatal: unable to access 'https://[email protected]/xxxx/xxxx-api.git/': The requested URL returned error: 403

после нескольких часов исследований я нашел, что мне нужно использовать команду ниже

$ git config --global credential.helper cache

после выполнения вышеприведенной команды я получил приглашение для подключения моего имени пользователя wash > w2 > . После предоставления правильных учетных данных я могу нажать мой код.

Ответ 7

вам нужно выполнить команду ниже в git bash. После выполнения попытки повторить клонирование на этот раз git bash отобразит всплывающее окно для имени пользователя и пароля.

(git config --global credential.helper wincred)

Ответ 8

Вам нужно создать файл authorized_keys в папке .ssh пользователя, под которым вы собираетесь подключиться к серверу репо. Например, если вы используете имя пользователя buildservice on repo.server, вы можете запустить:

cd ~buidservice
mkdir ./ssh
cat id_rsa.pub >> .ssh/authorized_keys

Чем вы должны проверить следующее:

  • Соответствующий закрытый ключ id_rsa представлен в [email protected]:~/.shh/id_rsa.

  • Этот отпечаток repo.server хранится в файле [email protected]:~/.ssh/known_hosts. Обычно это будет сделано после первой попытки ssh подключиться к repo.server.