Farklı hesaplarda ve ana bilgisayarlarda birden çok ssh anahtarı nasıl kullanılır?


21

Birden fazla ssh anahtarım var ve ayrıca bitbucket ve github'da hesabım var. nasıl her zaman çekme kullandığımda bana hata veriyor

:/var/www/proj$ git pull origin master
conq: repository access denied.
fatal: The remote end hung up unexpectedly

ya da bitbucket web sitesini ssh edersem, hatalar eşek ortak anahtar reddedildi verir

:~$ ssh git@bitbucket.org
Permission denied (publickey).

Bunu nasıl çözebilirim ve farklı hesaplarda farklı anahtarlar kullanabilirim.


Yanıtlar:


21

Bunların hepsi web sitesinden ve stackoverflow'tan toplanmıştır, umarım bu, yeni olanlara yardımcı olur

Böylece birçok ssh anahtarına sahip olabilirsiniz.

~/.ssh$ ls
yyy_id_rsa  yyy_id_rsa.pub  id_rsa  id_rsa.pub  known_hosts

Not: ssh-agent'a eklemeliyiz, muhtemelen id_rsa eklenecek, böylece diğer özel anahtarı eklememiz gerekecek

~/.ssh$ ssh-add yyy_id_rsa

Şimdi ssh-agent'a her iki ssh anahtarını da ekledik

biz bir bitbucket için bir tane ve bir tane github için

bu yüzden böyle bir config dosyası yaratırız

~/.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

Not: Bitbucket'te 2 farklı hesap için 2 farklı anahtar ve bir tane de github için kullanıyorum.

Şimdi hangi depoyu kullanacağını git deposuna söylemeliyiz, böylece o hesap için o özel ssh anahtarını alacağım

değişim git@bitbucket.orgyyyuser/yyyproject.gitiçingit@bit-yyyuser:yyyuser/yyyproject.git

böylece proje klasörüne ve uzak url'yi ekleyin

/var/www/yyyproject$ git remote add bit git@bit-yyyuser:yyyuser/yyyproject.git

diğer projede

/var/www/xxxproject$ git remote add bitt git@bit-xxxuser:xxxuser/xxxproject.git

şimdi itme ve çekmeyi kolayca kullanabilirsiniz

:/var/www/yyyproject$ git pull bit master
From bit-yyyuser:yyyuser/yyyproject
 * branch            master     -> FETCH_HEAD
Already up-to-date.
:/var/www/yyyproject$

ve başka bir proje

/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$ 

şimdi yerel makinede github projem yok, bu yüzden projeyi klonlamamız gerekiyor ama klonlamak için url'de küçük bir değişiklik yapmamız gerekiyor

url’miz bu şekilde

git@github.com:xxxuser/python.git

belirli anahtarlarla klonlamamız gerektiğinden, sadece ana bilgisayar adını tanımladığımız ana bilgisayarla değiştirmemiz gerekir

git@git-xxxuser:xxxuser/python.git

config dosyasında tanımlandığı gibi

ve şimdi klonlayabiliriz

:/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$ 

farklı host için farklı ssh anahtarlarını, biri git için ve diğeri bitbucket için tanımladık.

Şimdi kolayca çekebiliriz, itebiliriz.


Git URL'm https kullanıyorsa? Yine de bunun üzerinde çalışmak için?
Gelin Luo,

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.