Я создал новый репозиторий и столкнулся с странной ошибкой. Раньше я использовал Git на Bitbucket, но я только что переформатировал и теперь не могу заставить Git работать. После фиксации мне пришлось добавить свой адрес электронной почты и имя в глобальные переменные, но потом все было нормально.
Когда я пытаюсь использовать команду
git push origin master
это не работает. Я получаю это сообщение:
$ git push origin master
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Я здесь в растерянности. Мой друг, с которым я делюсь этим репозиторием, получил к нему доступ и просто нажал на него, но я не могу заставить его работать.
Ответы:
Написание этого для тех, кто только начинает работать с Git и BitBucket в Windows и не так хорошо знаком с Bash (поскольку это и общая проблема, и высокий рейтинг Google при поиске сообщения об ошибке в вопросе).
Для тех, кто не возражает против HTTPS и кто ищет быстрое решение, прокрутите до конца этого ответа, чтобы получить инструкции в разделе ДЛЯ ЛЕНИВЫХ
Для тех, кто хочет решить настоящую проблему, следуйте приведенным ниже инструкциям:
Как можно быстрее устранить проблему с SSH
Это набор инструкций, полученных из URL-адреса, на который ссылается VonC. Он был изменен, чтобы сделать его максимально гибким и лаконичным.
Не вводите
$
строки или строки, которые не начинаются с$
(это$
означает, что вы вводите это в GitBash).Откройте GitBash
Установите глобальную информацию, если вы еще этого не сделали:
Проверьте OpenSSH:
Видите что-то подобное?
Посмотрите, сгенерировали ли вы уже ключи:
Если файлов два, следующий шаг можно пропустить.
Оставьте все по умолчанию, введите кодовую фразу. Теперь вы должны увидеть результаты с помощью этой команды:
Проверьте существующий файл конфигурации:
Если вы получили результат, проверьте этот файл на наличие ошибочной информации. Если файла нет, сделайте следующее:
Подтвердите содержание:
Убедитесь, что вы запускаете агент SSH каждый раз при запуске GitBash:
start_agent
, этот шаг уже выполнен.Введите в GitBash следующее, чтобы создать файл .bashrc:
Убедитесь, что файл был успешно создан (ваш файл должен отличаться только там, где появляется «yourusername»):
.bashrc
по умолчанию не выполняется -.bash_profile
есть. Чтобы исправить это, поместите этот фрагмент в свой.bash_profile
:[[ -s ~/.bashrc ]] && source ~/.bashrc
Если бы вы не ввели кодовую фразу, вы бы увидели что-то подобное при запуске GitBash:
И следующее должно вернуть результаты:
Однако, если вы получите следующее из
ssh-add -l
:Это не породило агент SSH, и, вероятно, причиной является ваш .bashrc.
Если при запуске GitBash вы увидите следующее:
Это означает, что вы забыли экранировать $ с помощью \ при выводе на файл (т.е. переменные были расширены). Чтобы решить эту проблему, заново создайте свой .bashrc.
Убедитесь, что агент запущен и ваши ключи добавлены:
Должен вернуть что-то подобное:
Выполните следующую команду, чтобы получить свой открытый ключ:
(он должен вернуть что-то, начинающееся с "ssh-rsa ......"
ssh-rsa
начальный и конечный== youremail@yourdomain.com
бит)CTRL+A
затем,CTRL+C
чтобы снова скопировать открытый ключ в буфер обмена.Настройте свой закрытый ключ с помощью BitBucket, выполнив следующие действия:
Global Public Key
ярлыкGlobal Public Key
Теперь вход должен быть виден в списке ключей.Проверьте свои пульты:
Переключитесь на URL-адрес SSH:
Проверить, что все в рабочем состоянии:
Вы должны увидеть что-то вроде этого:
СДЕЛАННЫЙ!
Вы можете выбрать использование HTTPS вместо SSH. Вам потребуется ввести свой пароль во время удаленных операций (он временно кешируется после того, как вы введете его один раз). Вот как вы можете настроить HTTPS:
ДЛЯ ЛЕНИННЫХ
Вы должны исправить проблему SSH, как описано VonC; однако, если вы спешите совершить фиксацию и у вас нет инструментов / времени / знаний для создания нового открытого ключа прямо сейчас , установите в качестве источника альтернативу HTTPS:
Использование инструмента с графическим интерфейсом, такого как TortoiseGit или инструментов командной строки .
Вот документация этого альтернативного URL-адреса происхождения.
Командная строка для добавления источника, если он не существует:
Командная строка для изменения существующего источника:
ПРИМЕЧАНИЕ: имя вашей учетной записи не является вашим адресом электронной почты.
Вы также можете указать свою глобальную информацию:
Затем повторите попытку (повторная фиксация не требуется)
источник
~/.bashrc
но все же при запуске командыssh-all -l
Она все еще отображается.No agent
В этом случае попробуйте эту команду,ssh-agent /bin/bash
и она будетInitializing new SSH agent...
Эта ошибка также возникает, если вы забыли добавить закрытый ключ в
ssh-agent
. Сделайте это с помощью:источник
Переформатирование означает, что вы, вероятно, удалили свой открытый и закрытый ключи ssh (в ~ / .ssh).
Вам необходимо регенерировать их и опубликовать свой открытый ключ ssh в своем профиле BitBucket, как описано в разделе « Использование протокола SSH с Bitbucket » после « Настройка SSH для Git с помощью GitBash ».
Учетные записи-> Управление учетными записями-> Ключи SSH:
Затем:
Изображения из « Интеграция Mercurial / BitBucket с программным обеспечением JetBrains »
источник
Я решил это, удалив пульт с помощью команды:
а затем попытался добавить удаленный, используя https url вместо ssh
Он запрашивает учетные данные github. Введите учетные данные, а затем попробуйте нажать на git, используя:
источник
Просто нужен файл конфигурации в каталоге ~ / .ssh
ref: https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html,
добавьте конфигурацию ниже в файл конфигурации
источник
У меня такая же проблема. Мои ключи SSH были установлены правильно. Я исправил эту проблему вот так.
После создания нового проекта в Bitbucket используйте clone. Введите команду клонирования в терминале, и он должен клонировать пустой проект на ваш компьютер. После этого вы можете скопировать свои файлы в этот каталог и начать фиксацию и отправку в битбакет.
источник
git remote add
процесс просто не работал сегодня - я получил ошибку аутентификации при попытке нажать - но удаление .git, а затем использованиеgit clone
и повторное копирование моего источника (просто README.md) вместо этого работает нормально. Спасибо, Рафаэль - я бы точно не подумал попробовать это, если бы не твой ответ.mkdir /tmp/JUNK; cd /tmp/JUNK; git clone ...; cd ..; rm -rf JUNK
Два небольших уточнения, которые могут спасти кого-то от путаницы, через которую я прошел:
1 - URL-адреса подключения отличаются для HTTPS и SSH
При подключении через https вы используете
однако при подключении через SSH имя учетной записи всегда "git"
Попытка подключиться к SSH с именем вашей учетной записи впереди приведет к ошибке, полученной исходным плакатом. Вот как вы можете выполнить тест, подключившись к git @, а затем по ошибке попробовать ввести свое имя пользователя и увидеть ошибку.
2. Использование ключей SSH для командных учетных записей будет прекращено в 2017 г.
Если вы настраиваете ключи SSH для групповых учетных записей, они рекомендуют переключить их на личные учетные записи. Полезный совет, чтобы избежать е
источник
Если вы используете SourceTree (я использую 2.4.1), я нашел более простой способ сгенерировать ключ SSH и добавить его в свои настройки Bitbucket. Это решило проблему для меня.
Я получил электронное письмо от Bitbucket с подтверждением того, что в мою учетную запись был добавлен SSH-ключ.
Для справки: в macOS с помощью терминала вы можете использовать следующую команду, чтобы просмотреть ключи, созданные для вашего устройства. Здесь хранится сгенерированный вами ключ.
Как заявляли другие, эта документация мне помогла: используйте протокол SSH с Bitbucket Cloud
источник
Выполните ssh, как в руководстве по Atlassian, и убедитесь, что закрытый ключ вставлен в профиль, а не в репозиторий :)
источник
Atlassian tutorial
? Какие шаги нужно выполнить, чтобы вставить ключ в профиль и как узнать, вставлен ли он в репозиторий?Я получил ту же ошибку для одного репозитория - внезапно все остальные были и продолжают работать нормально, когда я пытаюсь нажать коммиты. Проблема оказалась с ключом SSH (как вы уже знаете из предыдущих комментариев) - на битбакете перейдите к,
View Profile
затем нажмитеManage Account
.Слева нажмите на,
SSH Keys
затем добавьте тот, который у вас есть в вашей системе, в каталог ~ / .ssh /.Если у вас еще нет сгенерированного файла - используйте инструкции из одного из сообщений, но убедитесь, что вы используете либо файл id_dsa.pub по умолчанию, либо файл с индивидуальным именем, а позже потребуется
-i
опция с путем к ключу, когда вы Подключить IEПосле того, как вы добавили свой локальный ключ в свою учетную запись на bitbucket, вы сможете начать взаимодействие с вашим репозиторием.
источник
Я нашел решение, которое лучше всего сработало для меня, - разбить толчок на более мелкие части.
и удаление больших файлов изображений скриншотов (10 МБ +) из коммитов
Безопасность не была проблемой в конце концов, больше об ограничениях файлов bin
источник
Эта ошибка также появляется, когда репозиторий не существует. Я пробовал все ответы, пока не увидел, что в названии репо отсутствует тире
источник
При ошибках:
[ошибка] доступ к репозиторию запрещен. доступ через ключ развертывания доступен только для чтения. фатальный: не удалось прочитать из удаленного репозитория. Убедитесь, что у вас есть правильные права доступа и репозиторий существует.
[ошибка] фатальный: не удалось прочитать из удаленного репозитория.
[ошибка] фатальный: невозможно найти удаленного помощника для https
Я решил выполнить следующие шаги:
Сначала установите эти зависимости:
Затем удалите git:
Теперь соберите и установите Git в последней версии, в этом случае:
Затем для настройки:
И, наконец, установите так:
вот и все, теперь настройте ваше репо с https:
если вы настроили ключ ssh на удаленном сервере, вам необходимо его удалить.
источник
Я получил эту ошибку
Тогда я попробовал
работал без кавычек.
источник
Я обнаружил, что командной строке git не нравятся ключи, сгенерированные моим конкурсом (Windows 10).
См. Мой ответ на Serverfault
источник
Я использую macOS, и хотя я установил свой открытый ключ в битбакете, в следующий раз, когда я попытался нажать, я получил
Что мне нужно было сделать, так это шаг 2. Добавьте ключ к ssh-agent, как описано в руководстве по настройке SSH-ключей Bitbucket и особенно на третьем шаге:
Надеюсь, это поможет пользователю Mac с той же проблемой.
источник
Вероятно, это вызвано наличием нескольких ключей SSH в агенте SSH (и / или BitBucket). Обратитесь к документации Atlassian для решения этой проблемы.
источник
У меня была эта проблема, и я думал, что сошел с ума. Пользуюсь SSH 20 лет. и git через SSH с 2012 года ... но почему я не могу получить свой репозиторий bitbucket на своем домашнем компьютере?
ну, у меня есть две учетные записи Bitbucket и 4 ключа SSH, загруженных в мой агент. даже если мой .ssh / config был настроен на использование правильного ключа. когда ssh инициализировал соединение, он использовал их в порядке загрузки в агент. поэтому я входил в свою личную учетную запись Bitbucket.
затем появляется Запрещенная ошибка при попытке получить репо. имеет смысл.
Я выгрузил ключ у агента
ssh-add -d ~/.ssh/personal_rsa
тогда я мог бы получить репозиторий.
... Позже я узнал, что могу заставить его использовать только указанную личность
Я не знал об этом последнем варианте
IdentitiesOnly
из самой документации bitbucket
https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/
источник
Это может быть не для всех, но я все же дам ответ, если у кого-то такая же причина. В основном у меня две учетные записи Bitbucket, каждая из которых имеет два разных открытых ключа. Выполнив запуск,
ssh -Tv bitbucket.org
мне удалось увидеть, что мой ноутбук отправляет неверный ключ (но поскольку оба открытых ключа зарегистрированы в битбакете, ключ все еще утвержден, то, поскольку ключ связан с другой учетной записью, которая не имеет доступа к репо, я нажимая, толчок отклоняется).Итак, я последовал этому руководству, и моя проблема исчезла: https://blog.developer.atlassian.com/different-ssh-keys-multiple-bitbucket-accounts/
источник
Git изменил некоторые из своих инструкций репо - убедитесь, что вы подключили локальное репо к облаку Git - проверьте каждый из этих шагов, чтобы увидеть, не пропустили ли вы какой-либо.
Документация Git [https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh], если вы предпочитаете следующую документацию - это далеко более подробно и достойно прочтения, чтобы понять, почему были кратко изложены следующие шаги.
Мой контрольный список Git: -
$rm -rf .git
которого рекурсивно удаляет gitwhich git
должно быть сказано/usr/local/bin/git
- если вы устанавливаете git с Homebrew$brew install git
Если вы допустили ошибку, вы можете обновить файл,
$ls -a
чтобы найти файл, а затем$open .gitignore
отредактировать его, сохранить и закрыть.Шаги по созданию нового ключа
ssh-keygen -t rsa -C "your_email@example.com"
СОХРАНИТЬ КЛЮЧ.ssh-add ~/.ssh/id_rsa
Вы также можете найти его, щелкнув изображение своего профиля и клавишу редактирования под ним в левой навигационной панели.
Скопируйте свой ключ в буфер обмена с помощью команды терминала:
pbcopy < ~/.ssh/id_rsa.pub
В поле Название укажите что-нибудь, что идентифицирует ваш компьютер, например MacBook Air YOUR_NAME.
В поле Ключ просто нажмите cmd+, Vчтобы вставить ключ, который вы создали ранее - не добавляйте и не удаляйте символы и или пробелы к ключу.
Нажмите Добавить ключ и проверьте, все ли работает в терминале, набрав:
ssh -T git@github.com
Вы должны увидеть следующее сообщение:
Теперь, когда ваш локальный компьютер подключен к облаку, вы можете создать репо в Интернете или на своем локальном компьютере. Git изменил имя master для ветки main. При связывании репозиториев проще использовать ключ HTTPS, чем ключ SSH. Хотя вам нужен SSH для первоначальной привязки репозиториев, чтобы избежать ошибки в вопросе.
Следуйте инструкциям, которые вы теперь получаете в своем репо - GitHub добавил дополнительный шаг для создания ветки (время написания октябрь 2020 г.).
для создания нового репозитория в командной строке echo "# testing-with-jest" >> README.md git init git add README.md git commit -m "first commit" git branch -M main git remote add origin - (используйте URL HTTPS, а не SSH) git push -u origin main
для отправки существующего репозитория из командной строки git remote add origin (использовать URL HTTPS, а не SSH) git branch -M main git push -u origin main
Если вы ошиблись, вы всегда можете начать все сначала, удалив инициализацию из папки git на вашем локальном компьютере
$rm -rf .git
и начав заново, но полезно сначала проверить, что ни один из вышеперечисленных шагов не пропущен, и всегда лучший источник истины документацию - даже если ее читать и понимать дольше!источник
Просто попробуй
источник