Доступ к bitbucket и github по ssh ключам
Если попытка склонировать любой приватный репозиторий с bitbucket или github по ssh вызывает ошибку вида:
То это значит, что вы не прошли авторизацию по ssh-ключам. Тут 2 варианта:
- Клонировать через https схему, при этом будет запрошен имя пользователя и пароль от аккаунта. Минус тот, что при любом обращении к центральному серверу (пр. git fetch , git pull ) придётся снова вводить пароль.
- Настроить ssh-ключи, чтобы git-аутентификация проходила автоматически без ввода паролей и т.д.
Если ключи у вас уже есть, то читайте сразу как добавить ssh ключ на github или добавить ssh ключ на bitbucket.
Рассмотрим подробнее как 1. создать ssh-ключи на linux (ubuntu) и добавить ssh ключи на 2. github и 3. bitbucket.
Генерация ssh-ключей
Для генерации ssh-ключа выполняем следующие команды:
После этого будет предложено ввести имя файла с ключами, либо если имя файла не указать, ключи будут созданы в файле id_rsa. Задаём имя файла с ключами, например, как «git_rsa«. Таким образом мы будем знать, что этот ssh-ключ используется конкретно для git-авторизации. Хотя, никто не запрещает использовать один и тот же ключ id_rsa. Ключи будут храниться в домашней директории пользователя
На запрос о установке пароля на связку ключей можно нажать enter, т.е. оставить пароль пустым (это безопасно). Теперь в каталоге
/.ssh появились 2 файла ключа:
- git_rsa — приватный, который нельзя никому сообщать
- git_rsa.pub — публичный, который мы сообщим gitbucket и github
По умолчанию при подключении к серверу для ssh-авторизации используется ключ с именем id_rsa. Мы это обойдём. Чтобы не указывать имя нужного нам ключа (git_rsa) при каждом подключении к серверу, отредактируйте файл
/.ssh/config (если файла ещё нет, создайте), добавьте содержимое для идентификации bitbucket-хоста и github:
Всё, на нашем комьютере или сервере (смотря где создавали ключи) нужные ключи созданы. Остаётся сообщить (добавить) наш публичный ключ туда, где мы будем проходить авторизацию, т.е. на github и bitbucket.
Добавление ssh-ключа на github
В своём профиле нажимаем Edit Profile -> SSH Keys -> Add SSH key.
В свежем интерфейсе github:
- кликаем на иконку профиля в правом верхнем углу, далее
- выбираем меню Settings
- в меню слева выбираем SSH and GPG keys
- Жмем кнопку New SSH key.
В форме добавления ключа указываем title (это название ключа, вводится для удобства, не на что не влияет) и key (это сам ключ, т.е. вставляем сюда всё содержимое файла
/.ssh/git_rsa.pub). Нажимаем Add key.
Добавление ssh-ключа на bitbucket
Авторизуемся, заходим в свой аккаунт. Нажимаем SSH keys -> Add Key. После ввода ключа в попап окошке нажимаем кнопку Add key для сохранения ssh-ключа.
Теперь вы можете клонировать свои приватные репозитории по ssh (git@github) без ввода пароля.
На что стоит обратить внимание если ssh-авторизация по ключу все еще не работает:
- Как добавить на linux сервер мой публичный ключ для входа по ssh по ключу без пароля? 2 ответа
- Как настроить доступ по ssh используя id_rsa ключи Решено!
- git отменить определённый коммит Решено!
- git удалить список тегов с сервера Решено!
- Ошибка при деплое на gh-pages 0 ответов
- git. Настройка git 0 комментариев
- git алиасы 0 комментариев
- Отправить Pull Request в чужой репозиторий на github 0 комментариев
- Настройка прав для id_rsa (bad permissions) 0 комментариев
- Сказать git какой из ssh-ключей использовать 0 комментариев
Комментарии 5
Мне вообще уже этот «Permission denied (publickey).» всю печёнку выел!
Суть такова: есть боевой проект на jino.ru, есть репо на bitbucket-е, есть локальная версия. Сгенерил путтигеном ключи. Публичный положил на сервер в папку .ssh и добавил ключ к аккаунту на битбаккете. У себя на ПК в путти-агенте активировал приватный ключ — все должно заработать, ан нет! В путти пытаюсь запулить или запушить изменения в связке бой-битбакет — постоянно такая шняга вылезает:
«Warning: Permanently added the RSA host key for IP address ‘2406:da. e9:9f55’ to the list of known hosts.
Permission denied (publickey).»
да, на бою в папке .ssh после первого запуска пула или пуша в путти был такой запрос:
»
The authenticity of host ‘bitbucket.org (2406:da0. 2c0:3470)’ can’t be established.
RSA key fingerprint is SHA256:zzX. YXaGp1A.
RSA key fingerprint is MD5:97:8c:1. aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
»
как я понял, что-то в стиле «подлинность битбакета не установлена, хотите ли продолжить?». Я ответил согласием, после чего создался успешно файл known_hosts (на бою в папке с ключами), куда пишется ip битбаккета (как я понимаю) и дублируется строка из ключа доступа в том виде ,в котором лежит на битбакете. На др ресурсах вычитал, что чтобы Warning не выскакивал, нужно на бю в папке с ключами положить файл config без расширения и с содержимым «UserKnownHostsFile
/.ssh/known_hosts» — сделано. Права доступа на файл ключа на бою — 600, на остальные 2 файла (конфиг и хостс) — 644, на всю папку .ssh — 700.
Что еще нужно, чтобы пул/пуш заработал по ssh. Я уже в депрессии полнейшей!)) Может для доступа к самому репо на битбакете отдельные ключи нужно добавлять? Типа, к аккаунту на битбаккете подключается, а к репе уже нет?
Amati2007, с виду вы все делаете верно!
на битбакет публичный ключ достаточно добавить только в аккаунт. Можно и отдельно в каждый репозиторий добавлять ключ, но не обязательно.
Вот еще вы пишете, что в бою при запушить возникает ошибка «Permission denied (publickey)».
1) А как вы на боевой сервер подключаетесь? Вводите пароль или авторизуетесь по тому же самому ssh ключу? Если вводите пароль, то попробуйте для начала проверить ssh-авторизацию на хостинг по тому же ключу.
2) У вас одна единственная пара ключей создана и называется id_rsa по дефолту? Чтобы убедиться что один и тот же ключ используется для коннекта, тот же что на битбакет прописан.
3) а в
/.ssh/config нет ничего лишнего? Указания на какой-то левый ключ? Для чистоты эксперимента удалить файл)
4) known_hosts удалить для чистоты эксперимента, он должен сам создаваться при первом подключении (хотя возможно еще зависит от ssh-клиента).
Вообще, судя по ошибке, не нравится именно ключ: проверить что на битбакет залит нужный ключ. Может, стоит сгенерить новый ключ и проверить заново (старый удалить).
/.ssh/known_hosts и все. Изначально этого файла не было и без него всегда выдает Warning. если соединяюсь по ssh. С ним. с ним warning выдавать не должно, но выдает все равно, правда не всегда — если в путти сделать 4 раза подряд сделать попытку пуш или пулл, то этого сообщения нет. Оно появляется с 5-ой и далее попытки. И да, я еще приметил, что в тексте сообщения этого warning вторая часть (после ::) значения IP всегда разное. Например:
5-я попытка -> 2406:da00:ff00::6b17:d1f5
6-я попытка -> 2406:da00:ff00::22c2:513
7-я попытка -> 2406:da00:ff00::22c0:3470
и т.д.
То есть складывается такое ощущение, что у битбакета динамический IP, хотя, по-идее, для таких подключений должен быть набор статичных. Они даже их список где-то публиковали.
4) Да, если я удаляю known_hosts, то при попытке пула / пуша в путти вначале идет запрос про ключи The authenticity of host ‘. (полный текст я приводил в основном сообщении), а когда я отвечаю на него Yes, то known_hosts на сервере создается заново.
Ремарка: если пробовать работать с репо не по ssh, а по https, то происходит следующее: при заходе в путти по логин/паролю все успешно, при попытке пулл/пуш просит пароль — я его ввожу тот, что от аккаунта битбакета и, вуаля, меня не пускает. все тот же «Доступ запрещен», хотя локальная связка работает и я могу как принимать файлы с битбакета на локал, так и отправлять изменения обратно.
Источник
Как начать работать с Git и Bitbucket
Git — это бесплатная (GNU) кроссплатформенная распределенная система контроля версиями кода (SCM), создана Линусом Торвальдсом. Представляет собой набор утилит командной строки. Позволяет работать над проектом целой команде разработчиков, где каждое изменение сохраняется в виде «коммитов» (commit — снимок изменений), что позволяет отслеживать версии кода и при необходимости делать откаты. Также есть возможность создавать отдельные ветки — так-называемые «форки» (копия проекта). Таким образом максимально снижаются риски появления багов в веб-разработке. Появляется возможность вести историю веб-разработки.
Git — не единственная SCM-система управления версиями кода. Кроме нее существуют такие популярные системы как: Mercurial, Subversion, Darks, Bazaar. Примеры проектов, основанных на Git: ядро Linux, GNOME, KDE, Andoid, Libre Office, Wine, PostgreSQL, Ruby on Rails, Redux Framework.
В этой статье мы поговорим о том, как новичку начать работать с Git и попробуем разместить статический веб-сайт на бесплатном хостинге Bitbucket Pages с помощью репозитория Git.
Итак, первое с чего начнем — зарегистрируемся на сайте Bitbucket:
Bitbucket является является конкурентом и аналогом более известного git-хостинга — GitHub. В отличие от GitHub, BitBucket позволяет совершенно бесплатно создавать как открытые, так и закрытые репозитории. Владельцы Bitbucket — австралийская IT-компания Atlassin, которая прославилась своей системой управления проектами JIRA. И в Bitbucket есть возможность интегрировать эту систему для работы с проектами.
После регистрации в Bitbucket, вам потребуется указать имя учетной записи (workplaceID). Затем создать свой первый репозиторий. Так как у нас задача стоит не просто создать репозиторий, а еще научиться использовать Bitbucket в качестве хостинга для статических сайтов, поэтому имя репозитория указываем в виде субдомена: .bitbucket.io. Подробно это описано в F.A.Q. Bitbucket>>
Репозиторий создан. Переходим к следующему шагу — скачиваем и устанавливаем непосредственно саму программу Git, с помощью которой сможем управлять git-репозиториями:
При установке оставляем почти все настройки по умолчанию, кроме некоторых: в качестве файлового редактора выбираем тот, что больше всего подходит — Vim, Nano, Visual Studio Code, Sublime Text или Notepad ++. В качестве терминала — выбираем не Windows, а Unix-подобный стиль командной строки (это значит, что в консоли Git будут действовать все те же правила и команды, что и в терминале Linux). После установки, запускаем программу Git. Выглядит она так:
Следующий шаг — создаем на компьютере локальную папку, где будут храниться ваши git-репозитории (папки с сайтами). Назовем ее, например, «git» и перейдем в нее с помощью терминала Git. Чтобы не печатать вручную, можно методом drag’n’drop перетянуть папку в консоль. Папка готова. Теперь нужно клонировать в нее git-репозиторий с Bibucket. Открываем в интернет-браузере сервис Bitbucket, переходим в меню Repositories, находим на листинге свой репозиторий — .bitbucket.io. Переходим в него:
Находим кнопку «Clone» и кликаем по ней:
В появившимся окне копируем команду для клонирования репозитория:
Вставляем эту команду в консоль Git (находясь при этом в созданной вами папке «git»). Жмем Enter. Программа успешно клонирует новый репозиторий в вашу папку «git» — в ней появится подпапка:
Переходим в нее и копируем файлы своего сайта, к примеру:
Теперь нужно синхронизировать все эти изменения с git-репозиторием Bitbucket. Идем в Git-консоль, переходим в локальную папку с сайтом с помощью команды — сd «имя_репозитория». В консоли появится дополнительная надпись — (master). Это значит, что вы сделали все правильно и теперь находитесь внутри репозитория, в мастер-ветке.
Выполняем стандартные команды для отправки файлов в git-репозиторий (запомните их):
git status // проверяем статус репозитория (есть изменения или нет)
git add —all // применить все изменения
git commit -m «комментарий» // импортировать файлы в очередь на отправку
git push // отправить все на репозиторий (мерж локальных изменений)
Готово. Теперь проверим все ли было отправлено в Bitbucket. Переходим в свой репозиторий, смотрим раздел Commits — тут должны отобразится последние действия:
Если нажать по конкретному «коммиту» (версии) — откроется подробный log, где вам покажут какие файлы в этой версии были обновлены/удалены, какие строчки кода и в каких файлах изменены, и так далее:
Итак, у нас все файлы сайта успешно перенесены в git-репозиторий на хостинг Bitbucket. Подождем пару минут, чтобы кэш обновился и открываем сайт по URL-адресу:
Изменения в git-репозиторий можно вносить и онлайн, прямо в веб-интерфейсе Bitbucket. Но не забудьте после этого синхронизировать их с вашей локальной папкой на вашем компьютере или сервере с помощью команды:
git pull // мерж удаленных изменений
Также с Bibucket’а вы можете с помощью SSH-консоли клонировать репозиторий на хостинг и развернуть там сайт, продолжив управлять изменениями с помощью Git по схеме: локальный репозиторий -> удаленный -> веб-хостинг.
Очень удобно работать с редактированием веб-кода в git-репозиториях с помощью IDE PHPStorm, как это делают профессиональные разработчики.
Таким образом мы разобрали основной принцип и алгоритм работы с Git:
- создали локальную папку (директорию) у себя на компьютере (сервере);
- скопировали в нее файлы, внесли в них любые изменения;
- с помощью Git-консоли подтвердили (git commit) все изменения;
- отправили (git push) их в созданный вами репозиторий на Bitcbucket (или Github).
Как видим, технология Git — простая, мощная и гибкая. По сравнению с FTP, это более продвинутый уровень веб-разработки, который требует навыков работы с командной строкой Linux. кто-то сказал в сети: «Мальчик заливает по FTP, мужчина поднимает Git»
И что еще полезно, вы можете использовать Git не только в целях веб-разработки. Например, работайте локально с электронными таблицами, текстовыми файлами, вносите изменения, синхронизируйте с git-репозиторием и при необходимости возвращайтесь к разным версиям документов.
Источник