Cara menggunakan beberapa kunci ssh dengan akun dan host yang berbeda


21

saya punya beberapa kunci ssh dan saya juga punya akun di bitbucket dan github. bagaimana kapan pun saya menggunakan tarikan itu memberi saya kesalahan

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

atau jika saya ssh situs web bitbucket itu memberikan kesalahan kunci publik ditolak

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

bagaimana saya bisa menyelesaikan ini dan menggunakan kunci yang berbeda dengan akun yang berbeda.


Jawaban:


21

Ini semua dikumpulkan dari situs web dan stackoverflow, semoga ini membantu yang baru mengenal ssh

sehingga Anda dapat memiliki banyak kunci ssh

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

Catatan: kita perlu menambahkan kemudian ke ssh-agent, mungkin id_rsa akan ditambahkan sehingga kita perlu menambahkan kunci pribadi lainnya

~/.ssh$ ssh-add yyy_id_rsa

sekarang kami telah menambahkan kedua kunci ssh ke ssh-agent

kami punya satu untuk bitbucket dan satu untuk github

jadi kami membuat file konfigurasi seperti ini

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

Catatan: Saya menggunakan 2 kunci berbeda untuk 2 akun berbeda di bitbucket dan satu untuk github.

Sekarang kita perlu memberi tahu git repositori mana host yang akan digunakan sehingga saya akan mendapatkan kunci ssh spesifik untuk akun tertentu

ubah git@bitbucket.orgyyyuser/yyyproject.gitkegit@bit-yyyuser:yyyuser/yyyproject.git

jadi di folder proyek dan tambahkan url jarak jauh

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

dalam proyek lain

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

sekarang Anda dapat menggunakan dorong dan tarik dengan mudah

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

dan proyek lain

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

sekarang saya tidak memiliki proyek github pada mesin lokal sehingga kita perlu mengkloning proyek tetapi kita perlu membuat sedikit perubahan pada url untuk mengkloning

url kita seperti ini

git@github.com:xxxuser/python.git

karena kita harus mengkloningnya dengan kunci tertentu kita hanya perlu mengubah nama host dengan host yang telah kita tentukan

git@git-xxxuser:xxxuser/python.git

sebagaimana didefinisikan dalam file konfigurasi

dan sekarang kita bisa mengkloning

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

kami telah mengidentifikasi kunci ssh yang berbeda untuk host yang berbeda, satu untuk git dan satu untuk bitbucket sekarang sistem mengetahui kunci ssh mana yang akan digunakan dengan host mana.

Sekarang kita dapat dengan mudah menarik, mendorong.


Bagaimana jika URL git saya menggunakan https? Pokoknya untuk mengerjakannya?
Gelin Luo

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.