git - 是否必须每次添加ssh-add
ringa_lee
ringa_lee 2017-04-28 09:04:12
0
3
2621

我的repo 分别推送到github,gitcafe。 正确添加了两个公钥私钥之后,并命名为id_github和id_gitcafe,发现每次push 代码 都必须重新ssh-add 上私钥。将id_github 名改回默认的id_rsa,就可以直接push了。但是gitcafe 被拒绝。有没有办法可以一次都设置上,不需要每次 ssh-add 私钥的。

ringa_lee
ringa_lee

ringa_lee

membalas semua(3)
淡淡烟草味

Pertama sekali, saya perlu katakan bahawa semua mekanisme yang berkaitan dengan ssh memang agak rumit, dan mudah keliru Jika anda ingin menguasai sistem pengetahuan ini secara menyeluruh, anda mesti secara sistematik mempelajari ilmu yang berkaitan. Jadi perkara pertama dahulu, saya syorkan sebuah buku kepada anda, anda juga boleh meluangkan masa untuk membacanya sekali dan untuk semua:

SSH, The Secure Shell, edisi pertama buku ini adalah dalam bahasa Cina.

Mari bincangkan tentang soalan khusus anda.

Anda mesti memahami satu perkara dahulu: ssh-add Perintah ini tidak digunakan untuk mengingati kunci peribadi yang anda gunakan secara kekal. Malah, fungsinya hanyalah untuk menambah kunci peribadi yang anda tentukan pada sesi yang diuruskan oleh ssh-agent. Dan ssh-agent ialah perkhidmatan sesi sementara yang digunakan untuk menyimpan kunci peribadi, maksudnya, selepas anda memulakan semula, perkhidmatan ssh-agent akan ditetapkan semula. .

Jika kami ingin mengingati kunci peribadi yang sepadan secara kekal, kami tidak boleh bergantung pada perkhidmatan ssh-agent. Perkara yang boleh anda harapkan bergantung pada pilihan berikut yang mana sesuai untuk kes penggunaan anda.

Gunakan sejenis mekanisme pengurusan kunci selamat

Anda tidak menerangkan sistem pengendalian yang anda gunakan dalam soalan, jadi saya akan menggunakan Mac OS X yang saya gunakan setiap hari sebagai contoh. Sistem Mac mempunyai perkhidmatan Rantai Kunci terbina dalam dan program pengurusannya, yang boleh membantu anda menguruskan pelbagai kunci rahsia dengan mudah, termasuk kekunci ssh. ssh-add akan menambah kunci rahsia yang ditentukan pada perkhidmatan ssh-agent yang sedang dijalankan secara lalai, tetapi anda boleh menukar tingkah laku lalai ini untuk menambahkannya pada rantai kunci Dalam perkhidmatan, benarkan Mac anda membantu anda mengingati, mengurus dan memastikan kunci ini selamat.

Apa yang anda perlu lakukan ialah laksanakan arahan berikut:

$ ssh-add -K [path/to/your/ssh-key]

Selepas itu, apabila program lain meminta kunci ssh, mereka akan memintanya melalui perkhidmatan Keychain. Dalam tangkapan skrin di bawah, anda boleh melihat kekunci ssh yang diuruskan oleh Rantai Kunci pada mesin semasa saya, termasuk empat yang dihasilkan oleh saya sendiri dan satu digunakan oleh Apl Pelanggan Github - yang pertama adalah untuk digunakan oleh perintah berkaitan ssh, dan yang terakhir menentukan bahawa ia adalah hanya digunakan oleh aplikasi Github.app. Selain itu, kesemuanya adalah rantai kunci log masuk, yang bermaksud ia hanya akan berkuat kuasa selepas pengguna semasa log masuk. Ia tidak boleh digunakan jika pengguna ditukar atau pengguna tidak log masuk. Inilah yang Perkhidmatan rantai kunci sesuai untuk anda.

Bagaimana untuk menggunakan berbilang kunci ssh untuk aplikasi yang berbeza?

Isu ini adalah sesuatu yang saya belum faham sepenuhnya Menurut beberapa maklumat, selepas melakukan kerja di atas, aplikasi sepatutnya dapat memadankan kunci ssh yang berkenaan secara automatik. Walau bagaimanapun, dalam proses kajian saya, saya juga menghadapi situasi di mana saya perlu menentukannya secara manual (saya tidak memahami peranan Keychain pada masa itu, jadi saya sentiasa secara manual ssh-add), jadi mekanisme lain boleh membantu Anda menyelesaikan masalah ini, iaitu konfigurasi ssh.

Ringkasnya, konfigurasi ssh ialah fail konfigurasi yang menerangkan tetapan yang sepadan dengan kunci yang berbeza - termasuk nama hos, nama pengguna, dasar akses, dsb.

Di bawah saya telah menangkap dua coretan konfigurasi setempat:

Dua konfigurasi ini sepadan dengan kunci rahsia yang digunakan oleh perkhidmatan Github dan Pengekodan. Hos dalam baris pertama hanyalah nama, dan Nama Hos dalam baris ketiga ialah alamat sebenar yang sepadan, tetapi sebaiknya pastikan kedua-duanya konsisten supaya anda' t perlu menukar mereka dalam kepala anda.

Dengan konfigurasi ini, apabila saya git clone https://github.com/user/repo, kunci rahsia id_rsa akan digunakan, dan apabila saya git clone https://coding.net/user/repo, jelas nightire kunci rahsia akan digunakan.

Sudah tentu, konfigurasi ini tidak terhad kepada Git Semua aplikasi dan perintah asas yang menggunakan SSH akan mengikut arahan dalam fail konfigurasi untuk mencari kunci peribadi yang sepadan.

Berbalik kepada topik pada permulaan bahagian ini, saya percaya bahawa dengan Rantai Kunci untuk pengurusan, fail konfigurasi ini tidak sepatutnya diperlukan, tetapi saya belum mempunyai peluang untuk mengujinya lagi. Segala-galanya baik dalam persekitaran semasa saya akan mencubanya apabila saya menukar kepada mesin baharu dan mengkonfigurasi semula persekitaran.

Mengenai perhubungan yang sepadan antara Hos dan Nama Hos, jika Nama Hos ialah nama domain, sebaiknya pastikan ia konsisten. Tetapi berikut adalah dua petua:
1. Bagaimana jika terdapat dua konfigurasi berbeza di bawah nama domain yang sama?
Mengambil Github sebagai contoh, jika saya mempunyai dua akaun, satu peribadi dan satu organisasi, dan ingin menggunakan kunci yang berbeza, maka saya boleh menulis seperti ini:

Di sini, Hos sepadan dengan dua nama pengguna Github, iaitu github.com/nightire dan github.com/very-geek
2. Jika nama domain adalah IP digital, bolehkah ia dipermudahkan?
Hos boleh membantu anda menukar IP yang sepadan menjadi nama yang mudah diingati. Contohnya, jika saya mengkonfigurasi Pelayan Git (berdasarkan gitolite atau Gitlab atau mana-mana alat) dalam syarikat, alamat akses biasa ialah: git://xxx.xxx.xxx.xxx:repo.git Konfigurasi berikut boleh membantu anda memudahkannya untuk: git.visionet:repo.git

Sangat berguna.

Adakah cara yang lebih mudah?

Ya. Jika ssh-add sudah memenuhi keperluan anda (kecuali perlu melakukannya sekali lagi selepas permulaan), maka anda boleh mengautomasikannya sepenuhnya dengan skrip. Hanya tulis kandungan perintah ssh-add yang anda masukkan ke dalam .bashrc atau .bash_profile (atau mana-mana fail konfigurasi persekitaran shell lain yang anda gunakan), supaya selagi anda membuka terminal, ia akan menjadi Ini dilakukan secara automatik.

Tetapi seperti yang saya katakan sebelum ini, mekanisme ini bergantung pada perkhidmatan ssh-agent dan hanya sah di bawah terminal. Menggunakan mekanisme Keychain adalah sah di seluruh sistem (termasuk aplikasi yang tidak bergantung pada terminal) dan tidak perlu membuka perkhidmatan ssh-agent.

Akhir sekali, perkhidmatan Keychain bukan sahaja tersedia pada Mac Saya baru sahaja mencari dan mendapati bahawa Windows dan pelbagai Linux mempunyai mekanisme yang sepadan, tetapi saya tidak pernah menggunakannya, jadi saya hanya boleh menggunakan Mac sebagai contoh. Sebaik sahaja anda memahami konsep ini, saya percaya anda boleh mencari kaedah khusus itu sendiri.

巴扎黑

Tambahan kecil pada jawapan yang diterima

ssh-add Perintah ini tidak digunakan untuk mengingati kunci peribadi yang anda gunakan secara kekal. Malah, fungsinya hanyalah untuk menambah kunci peribadi yang anda tentukan pada sesi
yang diuruskan oleh ssh-agent. Dan ssh-agent ialah perkhidmatan sesi sementara yang digunakan untuk menyimpan kunci peribadi, yang bermaksud apabila anda memulakan semula, perkhidmatan ssh-agent
akan ditetapkan semula.

Anda boleh belajar cara menambahkannya pada sesi semasa daripada artikel github:
Menjana kunci SSH baharu dan menambahkannya pada ejen ssh

Anda boleh mengetahui cara ssh menggunakan kunci awam dan pasangan kunci peribadi melalui artikel berikut:
Ralat: Kebenaran ditolak (kunci awam)

Selain itu, kandungan konfigurasi setempat diletakkan dalam fail:

/Users/you/.ssh/config
伊谢尔伦

Saya hanya menggunakan akaun dan kata laluan yang sama github.com coding.net. Ini boleh digunakan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan