Ada beberapa opsi, tergantung pada kebutuhan Anda, khususnya kebutuhan keamanan Anda. Untuk HTTP dan SSH, ada akses tanpa kata sandi, atau kata sandi diperlukan.
HTTP
==============
Tanpa Kata Sandi
Berguna untuk persyaratan pengambilan saja, secara default push dinonaktifkan. Sempurna jika kloning anonim adalah tujuannya. Anda seharusnya tidak mengaktifkan push untuk jenis konfigurasi ini. Halaman manual untuk git-http-backend berisi informasi yang baik, salinan online di http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html. Ini memberikan contoh cara mengonfigurasi apache untuk menyediakan ini.
Pengguna/kata sandi di .netrc atau url tersemat
Di mana file .netrc digunakan dalam bentuk:
machine <hostname> login <username> password <password>
Dan url tersemat akan berbentuk:
http://user:[email protected]/repo
Karena git tidak akan melakukan autentikasi untuk Anda, Anda perlu mengonfigurasi server web seperti apache untuk melakukan autentikasi, sebelum meneruskan permintaan ke alat git. Perlu diingat juga bahwa menggunakan metode yang disematkan merupakan risiko keamanan, bahkan jika Anda menggunakan https karena ini adalah bagian dari url yang diminta.
Jika Anda ingin dapat menarik non-interaktif, tetapi mencegah pengguna anonim mengakses repo git, ini harus menjadi solusi yang cukup ringan menggunakan apache untuk autentikasi dasar dan sebaiknya file .netrc untuk menyimpan kredensial. Sebagai gotcha kecil, git akan mengaktifkan akses tulis setelah autentikasi digunakan, jadi gunakan http anonim untuk hanya-baca, atau Anda harus melakukan beberapa konfigurasi tambahan jika ingin mencegah pengguna non-interaktif memiliki akses tulis .
Lihat:
- httpd.apache.org/docs/2.4/mod/mod_auth_basic.html untuk informasi lebih lanjut tentang mengonfigurasi autentikasi dasar
- www.kernel.org/pub/software/scm/git/docs/git-http-backend.html untuk beberapa contoh konfigurasi apache yang diperlukan.
SSH
==============
Tanpa Frasa Sandi
Terbuka untuk masalah keamanan, karena siapa pun yang dapat memperoleh kunci pribadi ssh sekarang dapat memperbarui repo git jarak jauh sebagai pengguna ini. Jika Anda ingin menggunakan ini secara non-interaktif, saya sarankan menginstal sesuatu seperti gitolite untuk membuatnya sedikit lebih mudah untuk memastikan bahwa mereka yang memiliki kunci pribadi ssh hanya dapat menarik dari repo, dan memerlukan pasangan kunci ssh yang berbeda untuk memperbarui repo.
Lihat github.com/sitaramc/gitolite/ untuk informasi lebih lanjut tentang gitolite.
stromberg.dnsalias.org/~strombrg/ssh-keys.html - untuk membuat kunci ssh tanpa kata sandi:Mungkin juga ingin mencakup pengelolaan beberapa kunci ssh:www.kelvinwong.ca/2011/03/30/multiple-ssh-private- key-identityfile/
Dilindungi fase sandi
Dapat menggunakan ssh-agent untuk membuka kunci per sesi, hanya sangat berguna untuk pengambilan interaktif dari git. Karena Anda menyebutkan root dan hanya berbicara tentang melakukan 'git pull', sepertinya use case Anda tidak interaktif. Ini adalah sesuatu yang mungkin lebih baik digabungkan dengan gitolite (github.com/sitaramc/gitolite/).
Ringkasan
==============
Menggunakan sesuatu seperti gitolite akan mengabstraksi banyak konfigurasi untuk pengaturan tipe SSH, dan sangat disarankan jika Anda merasa memiliki repositori tambahan atau perlu menentukan tingkat akses yang berbeda. Pencatatan dan auditnya juga sangat berguna.
Jika Anda hanya ingin menarik melalui http, halaman manual git-http-backend harus berisi informasi yang cukup untuk mengonfigurasi apache untuk melakukan yang diperlukan.
Anda selalu dapat menggabungkan http anonim untuk klon/tarik, dengan akses ssh yang dilindungi frasa sandi yang diperlukan untuk akses penuh, dalam hal ini tidak perlu menyiapkan gitolite, Anda cukup menambahkan kunci publik ssh ke ~/. ssh/authorized_keys.
Lihat jawaban untuk pertanyaan ini. Anda harus menggunakan akses SSH alih-alih HTTPS/GIT dan mengautentikasi melalui kunci publik SSH Anda. Ini juga harus berfungsi secara lokal.