Не удается нажать на битбакет, разрешение отклонено (publickey)

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

~/dev/sample_app git push -u origin --all
The authenticity of host 'bitbucket.org (131.103.20.168)' can't be established.
RSA key fingerprint is 81:7b:2c:f5:6f:18:2b:7c:4b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? 
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
~/dev/sample_app 

Я на Mac под управлением 10.8.4.

Итак, был достигнут небольшой прогресс, изначально не было папки .ssh, поэтому я создал ее еще в начале, не было файла known_hosts, поэтому я запустил

ssh -T [email protected]

Я выбрал «да», и это создало файл known_hosts, и когда я снова попытался нажать, я получил:

~/dev/sample_app git push -u origin --all
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Моя папка .ssh — 700, а ключи внутри — все 600.


person josephleon    schedule 14.07.2013    source источник
comment
Отвечать на свой вопрос как формальный ответ на самом деле рекомендуется, просто чтобы вы знали :)   -  person iono    schedule 29.11.2013
comment
И открытый ключ, соответствующий вашему закрытому ключу, зарегистрирован в вашей учетной записи Bitbucket, верно?   -  person janos    schedule 24.12.2014


Ответы (24)


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

Host bitbucket.org
  IdentityFile ~/.ssh/id_rsa

Когда вы бежите

ssh [email protected]

клиент ssh позволяет выбрать файл, из которого считывается идентификатор (закрытый ключ) для аутентификации RSA или DSA.

Клиент SSH для использования данного частного Ключ (файл идентификации)

person cyb0k    schedule 19.05.2014
comment
На моем компьютере с Linux было достаточно добавить строфу Host bitbucket.org в конец моего файла ~/.ssh/config. Но по какой-то причине в MacOS мне пришлось поместить эту строфу в начало файла, чтобы заставить директиву IdentityFile иметь приоритет над директивой по умолчанию в разделе Host *. - person MarkHu; 25.10.2019

Возможно, вы используете ssh в качестве исходного URL-адреса git. Попробуйте удалить источник ssh вот так

git remote rm origin

Затем добавьте новый источник с URL-адресом HTTPS и повторите попытку.

git remote add origin https://[email protected]/SOMETHING/SOMETHING.git
git push -u origin master

Убедитесь, что вы вставили свой URL-адрес из битбакета в качестве источника.

person Ronny Kibet    schedule 23.08.2017
comment
Это естественное решение для этого, и я всегда забываю - person MehranTM; 17.03.2019
comment
Это сработало — мне разрешен доступ по URL-адресу, а не по ssh — вот почему это работает. если у вас есть доступ по ssh к другим репо в вашей учетной записи, используйте только ссылку ssh, а не ссылку https - person Abdeali Chandanwala; 14.06.2019

Это может привести системных администраторов в ужас, но, столкнувшись с этой проблемой (Windows), я отказался от SSH и вернулся к HTTPS.

При первом добавлении удаленного репозитория в Git замените ссылку SSH «[email protected]...» на URL-адрес HTTPS «https://<username>@bitbucket.org».

Вы должны вводить свой пароль каждый раз, но, особенно в Windows, где SSH не так широко доступен, как в семействе * nix, я считаю это незначительным неудобством по сравнению с головной болью SSH.

person Cosmittus    schedule 24.12.2014
comment
Я потратил на это часы и часы, и оказалось, что единственный способ заставить это работать — использовать Pageant. Мне не нравится постоянно запускать подобное программное обеспечение в фоновом режиме, особенно если оно интегрируется в проводник Windows, но кажется, что BitBucket не работает так же прямолинейно, как GitHub, где я могу просто использовать ssh-keygen для генерации открытый ключ и добавить его в мою учетную запись GitHub. Я согласился с тем, что BitBucket и Windows — просто плохая комбинация, и прибегнул к использованию HTTPS. - person Paul Lammertsma; 12.04.2016
comment
Я работаю над Win 10, и вместо этого мне пришлось использовать HTTPS. - person Ali Afsah; 27.07.2020

В моем случае на новой машине с Ubuntu 16 у меня отсутствовали файлы в папке ~/.ssh, так что сработало:

  1. Перейти в папку ~/.ssh
  2. Запустите ssh-keygen и назовите свой файл, например id_rsa
  3. Запустите cat ~/.ssh/id_rsa.pub | xclip -sel clip
    Если пропустите xclip, просто apt-get install xclip :)
  4. Перейдите (в URL-адресе измените USERNAME на ваше имя пользователя bitbucket :)) https://bitbucket.org/account/user/USERNAME/ssh-keys/
  5. Нажмите Add key и вставьте ключ из буфера обмена

Магия - теперь работает :)

person pbaranski    schedule 07.11.2016
comment
Вопрос для Mac OS, apt-get не имеет никакого отношения - person coto; 16.05.2017
comment
Проблема в Ubuntu привела меня к этим вопросам и ответам (почему? см. теги), и эта проблема затрагивает пользователей Ubuntu, поэтому я описал свой опыт с Ubuntu (потому что я не могу на 100% сказать, что это решение будет работать в других ОС) . Ваше здоровье. - person pbaranski; 18.05.2017
comment
у меня все еще не работает (я использую Mac), есть идеи? - person zukijuki; 15.09.2017
comment
Для Windows; C:\Users\<userName>\.ssh (замените ‹userName› своим именем пользователя). Загрузите Git Bash, который позволяет ssh-keygen, и множество других функций, которые можно скачать здесь ›› git-scm.com/download /выиграть. - person Aakash; 13.03.2018

Более устойчивое решение — отредактировать .bashrc (например, vi ~/.bashrc), а затем добавить к нему следующую строку (заменить имя ключа)

ssh-add ~/.ssh/YOUR_KEY

Это автоматически загрузит ключ при запуске оболочки.

person iTech    schedule 15.05.2014

После настройки git с помощью git config --global user.name "My Name" и git config --global user.email [email protected] у меня все еще были проблемы с ошибкой Permission Denied (publickey). Чтобы решить эту проблему, я сначала сгенерировал новый токен ssh с

ssh-keygen

и скопировал его с

pbcopy < ~/.ssh/YOUR_KEY

После этого я зашел на сайт bitbucket.com, чтобы добавить его в качестве нового ключа SSH в свои настройки. Затем я вернулся к своему терминалу, чтобы добавить новый ключ с помощью

ssh-add ~/.ssh/YOUR_KEY.

Большая проблема, с которой я столкнулся, заключалась в том, что я пропустил критическую команду ssh-add [key].

person keala    schedule 13.02.2018
comment
работал правильно для меня, спасибо! чтобы немного уточнить, в пользовательском интерфейсе битового ведра щелкните значок своей учетной записи в правом верхнем углу, выберите настройки учетной записи, щелкните ключи ssh на левой панели, нажмите кнопку добавления ключа, появится текстовое поле, вставьте свой ключ ssh, который вы сгенерированный с помощью ssh-keygen в текстовое поле и сохраните. - person StvnBrkdll; 11.05.2021

У меня была аналогичная проблема с BitBucket. в моем случае это было исправлено только после того, как я узнал, что должен удалить sudo из команды git clone!

Согласно Attlassian:

Вы не должны использовать sudo при клонировании, отправке или извлечении, потому что ssh-агент работает на уровне пользователя, а не корневого уровня.

person Iman Sedighi    schedule 22.03.2018

Я столкнулся с теми же проблемами в Linux (Ubuntu).

Я решил это, используя настройку в git:

git config --global user.name "Your Name"
git config --global user.email [email protected]

Печать открытого ключа с помощью cat и ключа SSH на bitbucket.org:

$ cat ~/.ssh/id_rsa.pub

Добавляем Bitbucket и загружаем репозиторий:

git remote add origin [email protected]:<username>/your repository name.git
git push -u origin --all

Это все!

person Rafiqul    schedule 07.03.2016

В моем случае эта проблема возникла из-за того, что у меня было несколько ключей ssh ​​в файле ~/.ssh. Мне пришлось создать специальную запись для bitbucket.org в ~/.ssh/config следующим образом:

Host bitbucket.org
    Hostname bitbucket.org
    IdentityFile <location-of-.ssh-directory>/bb-rsa
    IdentitiesOnly=yes

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

person Sai Ramachandran    schedule 05.01.2021

Проверить наличие существующего ключа SSH

ls -al ~/.ssh

Скопируйте SSH-ключ

cat ~/.ssh/id_rsa.pub | pbcopy

Добавьте скопированный ключ SSH в «Настройки Bitbucket», «Безопасность», «Ключи SSH».

person Michael Stokes    schedule 24.09.2016

Это может быть очевидно, но я потратил на это довольно много времени.

Проверить место назначения при запуске git remote -v

В моем случае у меня были идеально настроены ключи ssh, но вывод этой команды был:

origin [email protected]:USERNAME/REPOSITORY.git

(обратите внимание, что get не git)

и не

origin [email protected]:USERNAME/REPOSITORY.git

Опять же, это был очень частный случай, но обязательно внимательно проверьте строки этой системы, если у вас возникли проблемы.

Вы можете исправить это с помощью следующих команд:

git remote set-url origin [email protected]:USERNAME/REPOSITORY.git

person chase    schedule 03.11.2017

В моем случае моя проблема заключалась в том, что я пытался использовать файл .ppk, созданный замазкой, и независимо от того, что я пробовал, ничего не получалось.

В конце концов я понял, что это был не тот файл, и мне пришлось экспортировать его, сохранить как файл id_rsa и загрузить, после чего все заработало.

введите здесь описание изображения

person eric.itzhak    schedule 29.11.2019

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

используйте «git clone https://username:[email protected]/username/repository.git" с вашим именем пользователя и паролем, а также URL-адресом репозитория.

person i_sapumal    schedule 20.02.2020

Мне нравятся ответы здесь, но все они пропускают возможную основную причину.

с командой:

ssh -T [email protected] 

замените bitbucket.org своим собственным хостом битбакета.

Если вы получите ответ типа:

Этот ключ развертывания имеет доступ для чтения к следующим репозиториям:

имя-команды/имя-репозитория

поэтому отправка в репозиторий не работает.

Это вы также можете дважды проверить в веб-интерфейсе Bitbucket, обратите внимание на read-only access в описании:

введите здесь описание изображения

Надеюсь, это дает другой взгляд на ту же проблему.

person VeRo    schedule 08.04.2020
comment
Итак, что вам нужно сделать, чтобы получить доступ для записи? - person Krishnadas PC; 24.06.2020

В моем случае проблема решилась добавлением ключа ssh из каталога

~/.ssh/id_rsa.pub

на bitbucket.org. Я также назвал его id_rsa.pub на сайте.

В начале я добавил еще один ключ, созданный специально для битбакета, и назвал его так. Первые удаленные действия сработали, но через несколько дней запрос был отклонен.

person Alex Cio    schedule 17.10.2015

В Windows ответ @efesaid работал для решения проблем с проверкой соединения ssh. Кстати, вы можете добавить -v, чтобы увидеть, какие ключи (по имени) пытаются использовать и почему соединение не удается.

Однако при нажатии на битбакет с использованием [email protected]:user/repo.git кажется, что хост не совсем битбакет.org, поэтому я все еще получал проблемы с отказом в разрешении. Я решил их, переименовав свой ключ в id_rsa (это имя ключа, которое использовалось в тесте ssh).

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

bitbucket.org:username

но я не уверен, что это не так

person Arcanefoam    schedule 12.01.2016

Я думаю, что инструкции битбакета лучше всего. Проверьте, установлен ли ssh, и если нет, установите его.

krasen@krasen-Lenovo-Y50-70:~$ ssh -v
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I xxxxx] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

krasen@krasen-Lenovo-Y50-70:~$ ls -a ~/.ssh 
.  ..  google_compute_engine  google_compute_engine.pub  identity  identity.pub  known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/krasen/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/krasen/.ssh/id_rsa.
Your public key has been saved in /home/krasen/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx krasen@krasen-Lenovo-Y50-70
The key's randomart image is:
+--[ RSA 2048]----+
|              .  |
|           xx x  |
|          xxxxx  |
|       xxxxxxxxx |
|      .xxxxxxxx  |
|       xxxxx     |
|     xxxxxxxxxxxx|
|    xxxxxxxxxxxxx|
|     xxxxxxxxxxx |
+-----------------+                                                                                                                                  
krasen@krasen-Lenovo-Y50-70:~$ ls -la ~/.ssh                                                                                                         
total 40
drwx------   2 krasen krasen 4096 Jun 29 14:30 .
drwxr-xr-x 110 krasen krasen 4096 Jun 29 13:00 ..
-rw-------   1 krasen krasen 1675 Mar 18  2015 google_compute_engine
-rw-r--r--   1 krasen krasen  409 Mar 18  2015 google_compute_engine.pub
-rw-------   1 krasen krasen 1679 Jun 29 13:15 identity
-rw-r--r--   1 krasen krasen  409 Jun 29 13:15 identity.pub
-rw-------   1 krasen krasen 1679 Jun 29 14:30 id_rsa
-rw-r--r--   1 krasen krasen  409 Jun 29 14:30 id_rsa.pub
-rw-r--r--   1 krasen krasen 4698 Jun 29 13:16 known_hosts

krasen@krasen-Lenovo-Y50-70:~$ ssh-agent /bin/bash

чтобы проверить, запущен ли агент

krasen@krasen-Lenovo-Y50-70:~$ ps -e | grep [s]sh-agent 
26503 ?        00:00:00 ssh-agent
krasen@krasen-Lenovo-Y50-70:~$ ssh-add ~/.ssh/id_rsa
Identity added: /home/krasen/.ssh/id_rsa (/home/krasen/.ssh/id_rsa)
krasen@krasen-Lenovo-Y50-70:~$ ssh-add -l 
2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx /home/krasen/.ssh/id_rsa (RSA)
krasen@krasen-Lenovo-Y50-70:~$ cat ~/.ssh/id_rsa.pub
ssh-rsa xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

получить этот ключ и добавить его как ключ в настройках битбакета

person makkasi    schedule 29.06.2016

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

git remote set-url origin ssh://[email protected]/...
person McEwin    schedule 28.09.2017

Убедитесь, что вы переключились на правильного пользователя на терминале.

В моем случае пользователь root не был тем, у кого есть ключи ssh, добавленные на панель настроек битбакета. Запуск git с sudo заставляет его работать от пользователя root, и мой собственный пользователь был тем, у кого были добавлены ключи.

person Erdinç Çorbacı    schedule 16.02.2018

Моя проблема была связана с разрешениями.

Каталог моего проекта принадлежал root, но я вошел в систему как ubuntu. Я бы получил PERMISSION DENIED, если бы ввел команду git, например. git pull origin master, поэтому я использовал sudo git pull origin master.

Я зарегистрировал SSH-ключ ubuntu от /home/ubuntu/.ssh/id_rsa.pub с помощью BitBucket.

Однако я использовал sudo. Таким образом, используемый ключ SSH на самом деле был /home/root/.ssh/id_rsa.pub, что отличалось от того, что было у BitBucket.

Решение для моего случая

chown -R username_here:username_here project/folder/here

Теперь это должно работать, если вы не добавите sudo

ИЛИ предоставить ключ BitBucket root

person Toby Mellor    schedule 13.03.2018

В дереве исходного кода выберите свой проект, щелкните правой кнопкой мыши, затем вы найдете параметр «Преобразовать в SSH» -> «Восстановить» -> войти в систему, это решено для меня введите здесь описание изображения

person Sajin    schedule 20.02.2020

Если вы используете SourceTree с Bitbucket, решение будет следующим:

Перейдите в свои личные настройки Bitbucket Got to App passwords и создайте пароль приложения Дайте следующие разрешения паролю приложения:

Repositories (R-W-A-D)
Projects (R-W)
Pull request (R-W)

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

person nosequeweaponer    schedule 14.07.2020

Если у вас есть несколько ключей на вашем компьютере, убедитесь, что вы добавили битбакет в список, как показано ниже в

.ssh/config
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_accelya

# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal


# Personal account bitbucket
Host bitbucket
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal_bitbucket
person Anjum....    schedule 28.11.2020

Если вы используете Fedora 33+ и используете алгоритм RSA. Вместо этого используйте более безопасный алгоритм, такой как ECDSA или ED25519.

ssh-keygen -t ed25519 -C "[email protected]"

источник: https://confluence.atlassian.com/bitbucketserverkb/ssh-rsa-key-rejected-with-message-no-mutual-signature-algorithm-1026057701.html

person Joyescat    schedule 16.07.2021