- Доступ к bitbucket и github по ssh ключам
- Генерация ssh-ключей
- Добавление ssh-ключа на github
- Добавление ssh-ключа на bitbucket
- Комментарии 5
- Создание ssh ключа для github linux
- Подготовка
- Генерация SSH-ключей для GitHub
- Добавление созданных SSH-ключей в SSH-агент
- Добавление нового SSH-ключа в GitHub аккаунт
- Adding a new SSH key to your GitHub account
Доступ к 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-авторизация по ключу все еще не работает:
- Как узнать адрес origin репозитория в git? Решено!
- Как изменить адрес origin репозитория в git? 2 ответа
- Как отменить последний коммит в git? Решено!
- Что значит git clone —depth Решено!
- Не открывает git remote 1 ответ
- 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, то происходит следующее: при заходе в путти по логин/паролю все успешно, при попытке пулл/пуш просит пароль — я его ввожу тот, что от аккаунта битбакета и, вуаля, меня не пускает. все тот же «Доступ запрещен», хотя локальная связка работает и я могу как принимать файлы с битбакета на локал, так и отправлять изменения обратно.
Источник
Создание ssh ключа для github linux
На данный момент, один из самых популярных репозиториев для системы контроля версий GitHub, использует аутентификацию пользователей через открытые SSH-ключи. Это позволяет работать с сервисом без ввода логина и пароля, а также удобно производить контроль доступа к своему репозиторию.
Рассмотрим вариант создания и добавления SSH-ключей к своему GitHub аккаунту.
Подготовка
Для начала скачаем и установим клиент GitHub по ссылке https://git-scm.com
Теперь попробуем клонировать существующий репозиторий c GitHub для понимания одной из самых популярных ошибок, возникающих при начале работы с Git. Для этого откроем установленную консоль Git Bash, нажав правую кнопку мыши и выбрав пункт Git Bash Here.
Не забудем предварительно перейти в подготовленный каталог для удобства экспериментов с Git. В моем случае это будет каталог C:/domains/test.
Введем в консоли Git Bash команду клонирования удаленного репозитория с GitHub:
Именно здесь мы столкнемся с фатальной ошибкой скачивания из-за ограничения доступа к GitHub:
Решим эту проблему созданием публичного ключа для GitHub.
Генерация SSH-ключей для GitHub
- Для начала создания ключей введем следующую команду в Git консоль: В данном случае, E-mail будет использован как метка для удобства в дальнейшем использовании.
- Далее можно указать путь для сохранения ключей. Или нажать Enter, чтобы установить в место, предлагаемое по умолчанию. В моем случае это будет C:/Users/sbb/.ssh/id_rsa
- Теперь Git попросит нас ввести любую ключевую фразу для более надежной защиты вашего пароля. Можно пропустить этот этап просто нажав Enter:
Итак, мы сгенерировали SSH-ключи и теперь перейдем к следующему этапу.
Добавление созданных SSH-ключей в SSH-агент
- Сперва убедимся, что SSH-агент включен.
Введем в консоли Git команду: Это запустит работу агента в фоновом режиме. После ввода этой команды, в консоли должно появиться id запущенного процесса.
Примерно так: - Добавим SSH-ключ в SSH-агент.
Если вы хотите использовать уже существующие ключи, вместо только что сгенерированных, тогда нужно заменить id_rsa при вводе команды в консоли именем существующего файла, содержащий приватный ключ.
В случаем использования только что созданных ключей просто вводим в консоль Git команду: Как результат, должно появиться в консоли следующее:
Следующим шагом будет добавление приватного ключа в GitHub аккаунт.
Добавление нового SSH-ключа в GitHub аккаунт
- Первым делом скопируем созданный SSH-ключ в буфер обмена командой: Или можно открыть файл с ключом в любом редакторе и скопировать вручную. Файл находится в директории C:/Users/ВАШЕ_ИМЯ/.ssh/id_rsa.pub
- Откроем настройки своего аккаунта на GitHub и перейдем в раздел SSH and GPC keys
- Нажмем на кнопку New SSH key
- Добавим в поле Title нужное вам название этого ключа, например, My New Key
- Вставим из буфера обмена в поле Key наш ключ
- И нажмем кнопку Add SSH key
Проверим, что все нами сделано верно, опять введя в консоль Git команду клонирования удаленного репозитория:
Через несколько секунд получим на своем локальном компьютере полную копию нужного нам репозитория.
Таким образом единожды проведя операцию создания публичного SSH-ключа и внеся его в свой профиль на GitHub, мы обеспечим себе удобную и безопасную работу с удаленным репозиторием.
Источник
Adding a new SSH key to your GitHub account
To configure your GitHub account to use your new (or existing) SSH key, you’ll also need to add it to your GitHub account.
Before adding a new SSH key to your GitHub account, you should have:
After adding a new SSH key to your GitHub account, you can reconfigure any local repositories to use SSH. For more information, see «Switching remote URLs from HTTPS to SSH.»
Note: GitHub is improving security by dropping older, insecure key types.
DSA keys ( ssh-dss ) are no longer supported. Existing keys will continue to function through March 15, 2022. You cannot add new DSA keys to your user account on GitHub.
RSA keys ( ssh-rsa ) with a valid_after before November 2, 2021 may continue to use any signature algorithm. RSA keys generated after that date must use a SHA-2 signature algorithm. Some older clients may need to be upgraded in order to use SHA-2 signatures.
Copy the SSH public key to your clipboard.
If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.
Tip: If pbcopy isn’t working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.
In the upper-right corner of any page, click your profile photo, then click Settings.
In the user settings sidebar, click SSH and GPG keys.
Click New SSH key or Add SSH key.
In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».
Paste your key into the «Key» field.
Click Add SSH key.
If prompted, confirm your GitHub password.
Copy the SSH public key to your clipboard.
If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.
Tip: If clip isn’t working, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.
In the upper-right corner of any page, click your profile photo, then click Settings.
In the user settings sidebar, click SSH and GPG keys.
Click New SSH key or Add SSH key.
In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».
Paste your key into the «Key» field.
Click Add SSH key.
If prompted, confirm your GitHub password.
Copy the SSH public key to your clipboard.
If your SSH public key file has a different name than the example code, modify the filename to match your current setup. When copying your key, don’t add any newlines or whitespace.
Tip: Alternatively, you can locate the hidden .ssh folder, open the file in your favorite text editor, and copy it to your clipboard.
In the upper-right corner of any page, click your profile photo, then click Settings.
In the user settings sidebar, click SSH and GPG keys.
Click New SSH key or Add SSH key.
In the «Title» field, add a descriptive label for the new key. For example, if you’re using a personal Mac, you might call this key «Personal MacBook Air».
Paste your key into the «Key» field.
Click Add SSH key.
If prompted, confirm your GitHub password.
To learn more about GitHub CLI, see «About GitHub CLI.»
To add an SSH key to your GitHub account, use the ssh-key add subcommand, specifying your public key.
To include a title for the new key, use the -t or —title flag.
Источник