Все это собрано с веб-сайта и stackoverflow, надеюсь, это поможет новичкам в ssh
так что вы можете иметь много ключей SSH
~/.ssh$ ls
yyy_id_rsa yyy_id_rsa.pub id_rsa id_rsa.pub known_hosts
Примечание: нам нужно добавить его в ssh-agent, возможно, будет добавлен id_rsa, поэтому нам нужно добавить другой закрытый ключ
~/.ssh$ ssh-add yyy_id_rsa
Теперь мы добавили оба ключа ssh в ssh-agent
у нас есть один для bitbucket и один для 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 разных учетных записей на bitbucket и один для github.
Теперь нам нужно указать репозиторию git, какой хост использовать, чтобы я получил этот конкретный ключ 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 для разных хостов, один для git и один для bitbucket, теперь система знает, какие ключи ssh будут использоваться с каким хостом.
Теперь мы можем легко тянуть, толкать.