Git в Bitbucket: всегда запрашивался пароль, даже после загрузки моего общедоступного ключа SSH
Я загрузил свой ~/.ssh/id_rsa.pub
в Bitbucket SSH keys как объяснил, но Git все еще спрашивает меня о моем пароле при каждой операции (например, git pull
). Я что-то пропустил?
Это частный репозиторий (fork другого личного репозитория), и я клонировал его следующим образом:
git clone [email protected]:Nicolas_Raoul/therepo.git
Вот мой локальный .git/config
:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://[email protected]/Nicolas_Raoul/therepo.git
[branch "master"]
remote = origin
merge = refs/heads/master
В той же среде с тем же открытым ключом, Git в Github отлично работает.
.ssh
составляет rwx------
, .ssh/id_rsa
is -rw-------
, .ssh/id_rsa.pub
is -rw-r--r--
Ответы
Ответ 1
Вы уверены, что вы клонировали его с помощью URL-адреса ssh?
URL-адрес источника говорит url = https://[email protected]/Nicolas_Raoul/therepo.git
, поэтому, если он использует https, он будет запрашивать пароль независимо от ваших ssh-ключей.
Ответ 2
Как поясняется здесь, если вы клонируете URL-адрес SSH, вам не нужно вводить имя пользователя/пароль каждый раз, когда вы нажимаете/тянете. Проверьте выше ответ @manojlds
Но если вы хотите клонировать HTTPS и хотите, чтобы каждый раз не вводить имя пользователя/пароль, вы можете хранить учетные данные в кеше с помощью следующей команды:
git config --global credential.helper 'cache --timeout 3600'
где 3600 (секунд) означает 1 час, вы можете изменить его согласно вашему требованию.
Ответ 3
Он уже ответил выше. Я обобщу шаги, которые нужно проверить выше.
запустите git remote -v
в директории проекта. Если на выходе отображается удаленный url, начинающийся с https://abc
, тогда вам может понадобиться пароль пользователя каждый раз.
Итак, чтобы изменить удаленный URL-адрес git remote set-url origin {ssh remote url address starts with mostly [email protected]:}
.
Теперь запустите git remote -v
, чтобы проверить измененный удаленный URL.
Refer: https://help.github.com/articles/changing-a-remote-s-url/
Ответ 4
В случае HTTP-запроса также можно вставить учетные данные (с паролем) прямо в URL-адрес:
http://username:[email protected]/...
Это позволит сэкономить боль, чтобы снова получать ваши учетные данные. Просто измените свой .git/config (url).
Ответ 5
Привет гуглеры из будущего.
В MacOS> = High Sierra ключ SSH больше не сохраняется в KeyChain по причинам.
Использование ssh-add -K
больше не сохраняется и перезапускается.
Вот 3 возможных решения.
Я успешно использовал первый метод. Я создал файл с именем config
в ~/.ssh
:
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Ответ 6
Ни один из этих ответов не помог мне, оказалось, что моя проблема немного отличалась. Это был ssh, который спрашивал мой пароль каждый раз перед отправкой ключа. Так что я должен был связать свой пароль с этой командой:
ssh-add -K ~/.ssh/id_rsa
Затем он запросит ваш пароль и сохранит его. Это может быть решением, которое вы ищете, если каждый раз, когда вы запрашиваете пароль, он говорит
Введите кодовую фразу для ключа '/Users//.ssh/id_rsa':
Больше информации здесь
ПРИМЕЧАНИЕ. Я успешно использовал это на своем компьютере Mac, но, как указал @Rob Kwasowski ниже, опция K
в верхнем регистре уникальна для Mac. Если не на Mac, вам нужно использовать строчные k
(что, вероятно, работает и для Mac, но я не проверял).
Ответ 7
Ответ 8
Следующее предполагает доступ к командной строке через iTerm/Terminal для битбакета.
Для MacOS Sierra 10.12.5 моя система проявила эквивалентную проблему - запрос моей кодовой фразы SSH для каждого подключения к битбакету.
Проблема связана с обновлениями OpenSSH в macOS 10.12.2, которые описаны здесь в Техническая нота TN2449.
Вы очень хорошо можете адаптировать свое решение, но следующее будет работать при добавлении в ваш файл ~/.ssh/config:
Host *
UseKeychain yes
Для получения дополнительной информации о конфигурациях ssh, посмотрите man-страницы для ssh_config:
% man ssh_config
Еще одна вещь: есть хорошая запись на суперпользователя здесь, где обсуждаются эта проблема и различные решения в зависимости от ваших потребностей и установка.
Ответ 9
Возможно, вам придется дважды проверить свой личный файл SSH. Вы можете руководить BitBucket, чтобы посмотреть на другой/неправильный закрытый ключ на эквивалентный открытый ключ, который вы сохранили на BitBucket.
Проверьте это с помощью tail ~/.ssh/config
- вы увидите что-то похожее на:
Host bitbucket.org
HostName bitbucket.org
IdentityFile ~/.ssh/personal-bitbucket-ssh-key
Помните, что добавление дополнительных идентификаторов (например, работы и дома) может быть выполнено с помощью команды ssh-add
, например:
ssh-keygen -t rsa -C "companyName" -f "companyName"
ssh-add ~/.ssh/companyName
После того, как вы подтвердите, какой секретный ключ просматривается локально, вы можете воспользоваться своим общедоступным эквивалентом, в этом случае:
cat ~/.ssh/personal-bitbucket-ssh-key.pub | pbcopy
И вставьте этот шифр на BitBucket. Теперь ваши git push (при условии, что вы используете SSH-клон, как указывали вышеупомянутые ответы), разрешены без пароля, так как ваше устройство признано дружественным.
Надеюсь, это поможет кому-то разобраться.
Ответ 10
Со мной, хотя я побежал 'git clone ssh://[email protected]: 7999/projName/projA.git' Мне все еще было предложено ввести пароль для этого нового репо, который я клонировал, поэтому, сравнивая его.git/config в другие репозитории, которые работают. Он оказался URL-адресом в разделе [remote "origin"], он был установлен в путь ssh выше для нового репо, но был установлен на https: xxx для рабочего,
Ответ 11
У меня были другие странности при входе в систему. Я столкнулся с чем-то, что казалось совершенно глупым, но сработало в моем случае. Просто перейдите на связку ключей MacOS. Найдите значок блокировки входа в систему на боковой панели. Нажмите, чтобы выйти, а затем нажмите, чтобы войти. Звучит глупо, но это решило мои проблемы. Стоит выстрел.
Ответ 12
Я клонировал репозиторий с HTTPS-URL вместо SSH-URL, поэтому даже после добавления SSH-ключа он запрашивал у меня пароль в Bash Shell.
Я просто отредактировал файл ./.git/config
и изменил значение переменной url
, просто заменив https://
на ssh://
Например
[core]
...
...
...
[remote "origin"]
url = https://<username>@bitbucket.org/<username>/<repository_name>.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
...
...
Изменился на:
[core]
...
...
...
[remote "origin"]
url = ssh://<username>@bitbucket.org/<username>/<repository_name>.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
...
...