У меня есть несколько ключей SSH, и у меня также есть учетная запись на bitbucket и github. каким образом, когда я использую pull, это дает мне ошибку
:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly
или если я ssh на веб-сайте bitbucket выдает ошибки, когда открытый ключ запрещен
:~$ ssh git@bitbucket.org
Permission denied (publickey).
, как я могу решить эту проблему и использовать разные ключи с разными аккаунтами.
Это все собрано с веб-сайта и stackoverflow, надежда, которой это помогает, кто плохо знаком с ssh
таким образом, у Вас может быть много ssh ключей
~/.ssh$ ls
yyy_id_rsa yyy_id_rsa.pub id_rsa id_rsa.pub known_hosts
Примечание: мы должны добавить затем к ssh-агенту, вероятно, id_rsa будет добавлен так, мы должны добавить другой закрытый ключ
~/.ssh$ ssh-add yyy_id_rsa
теперь мы добавили обоих ssh ключи к ssh-агенту
мы имеем один для битоприемника и один для GitHub
таким образом, мы создаем файл конфигурации как это
~/.ssh$ nano config
Host bit-yyyuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/yyy_id_rsa
User yyyuser
Host bit-xxxuser bitbucket.org
Hostname bitbucket.org
IdentityFile ~/.ssh/id_rsa
User xxxuser
Host git-xxxuser github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User xxxuser
Примечание: Я использую 2 различных ключа для 2 других учетных записей на битоприемнике и один для GitHub.
Теперь мы должны сказать репозиторий мерзавца, которые размещают для использования так, чтобы я получил тот определенный ssh ключ для той определенной учетной записи
изменение git@bitbucket.orgyyyuser/yyyproject.git
кому: git@bit-yyyuser:yyyuser/yyyproject.git
таким образом в папке проекта и добавляют удаленный URL
/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git
в другом проекте
/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git
теперь можно использовать нажатие и получение по запросу легко
:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
* branch master -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$
и другой проект
/var/www/xxxproject$ git push bitt ver1
To git@bit-xxxuser:xxxuser/xxxproject.git
* branch master -> FETCH_HEAD
Already up-to-date.
:/var/www/xxxproject$
теперь у меня нет проекта GitHub на локальной машине, таким образом, мы должны клонировать проект, но мы должны внести немного изменения в URL для клонирования
наш URL похож на это
git@github.com:xxxuser/python.git
поскольку мы должны клонировать его с определенными ключами, мы просто должны изменить имя хоста с хостом, который мы определили
git@git-xxxuser:xxxuser/python.git
как определено в файле конфигурации
и теперь мы можем клонироваться
:/var/www/us$ git clone git@git-xxxuser:xxxuser/python.git
Cloning into 'python'...
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 75 (delta 18), reused 62 (delta 8)
Receiving objects: 100% (75/75), 6.29 KiB, done.
Resolving deltas: 100% (18/18), done.
:/var/www/us$
мы определили различные ssh ключи для другого хоста, один для мерзавца и один для битоприемника теперь, система знает который ssh ключи использоваться с который хост.
Теперь мы можем легко вытянуть, продвинуть.
Я настраиваю ~/.ssh/config
следующим образом:
Host gitlab-as-thuc
HostName git.thuc.com
User git
IdentityFile ~/.ssh/id_rsa.thuc
IdentitiesOnly yes
, затем использую пользовательское имя хоста вместо реального домена в URL-адресе git:
git remote add thuc git@gitlab-as-thuc:your-repo.git
Подробнее см. Здесь: [ 113] http://itblog.study.land/how-to-specify-different-ssh-keys-for-git-push-for-a-given-domain/