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/*
        ...
        ...
        ...