У меня есть служба автоматического построения, которая загружается из частного хранилища git. Проблема в том, что когда он пытается клонировать репозиторий, ему необходимо предоставить пароль, потому что он не запоминается; поэтому, поскольку нет человеческого взаимодействия, он всегда ждет пароля. Как я могу заставить его запомнить из id_rsa.pub?
Как предотвратить ввод пароля для дешифрования закрытого ключа каждый раз при использовании Git Bash в Windows?
Ответ 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
Это будет помнить мою кодовую фразу для новых сеансов терминала; Мне нужно только ввести его один раз, когда я открою свой первый терминал после загрузки.
Я хотел бы отдать должное тому, где я получил это, это модификация кого-то другого, но я не могу вспомнить, откуда она взялась. Спасибо анонимному автору!
Ответ 5
Что сказал @starmonkey. Если вы запутались в том, что ~/.bashrc проверяет этот ответ SO: Git для Windows:.bashrc или эквивалентные файлы конфигурации для Git Bash оболочки
Ответ 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
.