Несколько аккаунтов в Bitbucket

Bitbucket — это один из популярных облачных сервисов для управления репозиториями кода Git. Все свои приватные проекты я храню на Bitbucket, а публичные — на GitHub.

Допустим, у вас есть рабочий аккаунт в BitBucket и свой личный, два отдельных аккаунта.

Чтобы подключаться к нескольким аккаунтам Битбакета нужны различные настройки под каждый аккаунт на репозиторий. Самый надёжный способ настройки — через SSH ключи. Ключ добавляется в профиле BitBucket.

И всё бы ничего, но BitBucket запретил добавлять один и тот же публичный ключ в разные профили. Вы не сможете привязать один SSH ключ в оба аккаунта, Bitbucket выдаст ошибку.

Ошибка при добавлении ключа в Bitbucket

Поэтому нужно сгенерировать ключ под каждый из профилей и привязать отдельно.

SmartGit

Я использую SmartGit для управления Git репозиториями. Это графическая оболочка для Git. У меня получается просматривать изменения, решать конфликты, заливать код быстрее и удобнее в SmartGit, чем в консоли или в встроенных средствах PhpStorm.

Для своей работы он использует стандартную команду git для всех операций с репозиторием, а она в свою очередь использует стандартную команду ssh для работы с репозиториями, подключенными по SSH.

SmartGit => git => ssh

Для всех репозиториев по умолчанию выбирается SSH-ключ из профиля пользователя, C:\Users\<CoolUser>\.ssh\id_rsa

Но мне нужно, чтобы для некоторых репозиториев использовался другой SSH-ключ, не дефолтный а тот что я сгенерировал и привязал в аккаунте битбакета.

Для тех кто не использует SmartGit эта инструкция тоже может быть полезна, потому что мы настраиваем “базовое” окружение клиента Git. Поверх него будут работать все инструменты автоматизации команд Git, например модуль работы с Git в PhpStorm.

Вот как я это сделал.

1. Настраиваем доступ по SSH

  • Создаём ключ SSH

    ssh-keygen -t rsa
    

    Ввводим путь к приватному ключу:

    /home/<cooluser>/.ssh/id_rsa_mycoolproject

    Создано два файла:

    • /home/<cooluser>/.ssh/id_rsa_mycoolproject
    • /home/<cooluser>/.ssh/id_rsa_mycoolproject.pub

    Первый файл это приватный ключ SSH, второй файл это публичный ключ SSH.

  • Вставляем публичный ключ в настройки аккаунта на Битбакете.

  • Переходим по этой ссылке https://bitbucket.org/account/settings/ssh-keys/

    Или нажимаем аватарку в левом нижнем углу личного кабинета Bitbucket, а дальше выбираем “Personal settings” => “Security” => “SSH keys”.

2. Настраиваем локальный репозиторий

  • Клонируем репозиторий.

    При клонировании по умолчанию будет использоваться SSH-ключ /home/<cooluser>/.ssh/id_rsa.

    Чтобы переключиться на сгенерированный ключ id_rsa_mycoolproject, устанавливаем переменную окружения в команде клонирования.

    GIT_SSH_COMMAND='ssh -i /home/<cooluser>/.ssh/id_rsa_mycoolproject -o IdentitiesOnly=yes' git clone git@bitbucket.org:mycoolproject/gc.git
    
  • Указываем ключ SSH для всех обращений к репозиторию.

    • Если мы работаем с git в Linux

      В папке репозитория выполняем команду:

      git config core.sshCommand "ssh -i /home/<cooluser>/.ssh/id_rsa_mycoolproject -o IdentitiesOnly=yes"
      
    • Если мы работаем с git в Windows

      Копируем приватный ключ в C:\Users\<CoolUser>\.ssh

      В папке репозитория выполняем команду:

      git config core.sshCommand "ssh -i C:\\Users\\<CoolUser>\\.ssh\\id_rsa_mycoolproject -o IdentitiesOnly=yes"
      

Настройка закончена. Теперь и консольная команда git, и сам SmartGit будут знать, какой ключ SSH использовать для нашего репозитория.