Git on Bitbucket: всегда запрашивается пароль, даже после загрузки моего открытого ключа SSH - PullRequest
156 голосов
/ 22 декабря 2011

Я загрузил свои ~/.ssh/id_rsa.pub в ключи SSH Bitbucket , как объяснил , но Git по-прежнему запрашивает у меня пароль при каждой операции (например, git pull).Я что-то пропустил?

Это частный репозиторий (форк частного репозитория другого человека), и я клонировал его так:

git clone git@bitbucket.org: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://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git
[branch "master"]
        remote = origin
        merge = refs/heads/master

В той же среде с тем же открытым ключом Git на Github работает нормально.
.ssh это rwx------, .ssh/id_rsa это -rw-------, .ssh/id_rsa.pub это -rw-r--r--

Ответы [ 12 ]

234 голосов
/ 22 декабря 2011

Вы уверены, что клонировали его, используя URL-адрес ssh?

В URL для источника указано url = https://Nicolas_Raoul@bitbucket.org/Nicolas_Raoul/therepo.git, поэтому, если он использует https, он будет запрашивать пароль независимо от ваших ключей ssh.

30 голосов
/ 20 марта 2016

Как объяснено здесь , если вы клонируете с SSH url, вам не нужно вводить имя пользователя / пароль при каждом нажатии / вытягивании.Проверьте выше ответ от @ manojlds

Но если вы хотите клонировать с HTTPS и хотите избегать ввода имени пользователя / пароля каждый раз, выможно сохранить учетные данные в кэш с помощью следующей команды:

git config --global credential.helper 'cache --timeout 3600'

, где 3600 (секунд) означает 1 час, вы можете изменить его согласно своему требованию.

17 голосов
/ 30 мая 2016

Его уже ответили выше. Я обобщу шаги, чтобы проверить выше.

запустить git remote -v в проекте dir. Если в выходных данных отображается удаленный URL-адрес, начинающийся с https://abc, то вам может понадобиться пароль пользователя каждый раз.

Таким образом, чтобы изменить удаленный URL, запустите git remote set-url origin {ssh remote url address starts with mostly git@bitbucket.org:}.

Теперь запустите git remote -v, чтобы проверить измененный удаленный URL.

См .: https://help.github.com/articles/changing-a-remote-s-url/

10 голосов
/ 23 ноября 2015

В случае HTTP-запроса также возможно альтернативно вставить учетные данные (с паролем) непосредственно в URL:

http://username:password@bitbucket.org/...

Это избавит от боли, чтобы каждый раз выдавать свои учетные данные. Просто измените ваш .git / config (URL).

8 голосов
/ 02 мая 2018

Здравствуйте, гуглеры из будущего.

В MacOS> = High Sierra, ключ SSH больше не сохраняется в KeyChain по причинам .

Использование ssh-add -K больше не сохраняется, также перезапускается.

Вот 3 возможных решения .

Я успешно использовал первый метод. Я создал файл с именем config в ~/.ssh:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
5 голосов
/ 08 февраля 2019

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

ssh-add -K ~/.ssh/id_rsa

Затем он запросит ваш пароль и сохранит его.Это может быть решением, которое вы ищете, если при каждом запросе пароля выдается

Введите кодовую фразу для ключа '/Users//.ssh/id_rsa':

Подробнее здесь

ПРИМЕЧАНИЕ. Я успешно использовал это на своем компьютере Mac, но, как указал @Rob Kwasowski ниже, опция K в верхнем регистре уникальна для Mac.Если не на Mac, вам нужно использовать строчные буквы k (что, вероятно, работает и для Mac, но я не проверял).

4 голосов
/ 14 декабря 2017

Следующее предполагает доступ из командной строки через iTerm / Terminal к bitbucket.

Для MacOS Sierra 10.12.5 моя система обнаружила аналогичную проблему - запрашивая мою SSH-фразу на каждомподключение к bitbucket.

Проблема связана с обновлениями OpenSSH в macOS 10.12.2, которые описаны здесь в Техническое примечание TN2449 .

Возможно, вы захотитечтобы адаптировать ваше решение, но при добавлении в ваш ~ / .ssh / config файл будет работать следующее:

Host *
    UseKeychain yes

Для получения дополнительной информации о ssh-конфигурациях, посмотрите справочные страницы для ssh_config:

% man ssh_config

Еще одна вещь: здесь есть хорошая статья для superuser здесь , в которой обсуждается эта проблема и различные решения в зависимости от ваших потребностей и настроек.

4 голосов
/ 08 апреля 2016
2 голосов
/ 04 июля 2019

Я клонировал репозиторий с URL-адресом HTTPS вместо URL-адреса SSH, поэтому даже после добавления ключа SSH он запрашивал пароль для Bash Shell.

Я только что отредактировал файл ./.git/config и изменил значение переменной url, просто заменив https:// на ssh://

1009 * Е.Г. *

[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/*
        ...
        ...
        ...
1 голос
/ 21 марта 2018

Вам может понадобиться перепроверить файл идентификаторов 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 pushes (если вы используете клон SSH, как указывалось в вышеупомянутых ответах) будут разрешены без пароля, поскольку ваше устройство признано дружественным.

Надеюсь, это поможет кому-то прояснить ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...