Saya memiliki server git pengembangan yang menyebarkan ke server hidup ketika live
cabang didorong ke. Setiap pengguna memiliki login sendiri dan oleh karena itu post-receive
hook yang melakukan penyebaran langsung dijalankan di bawah pengguna mereka sendiri.
Karena saya tidak mau harus mempertahankan kunci publik pengguna sebagai kunci resmi pada server live jarak jauh, saya telah membuat satu set kunci yang termasuk dalam sistem git untuk ditambahkan ke server live jarak jauh (Dalam post-receive
kait saya menggunakan $GIT_SSH
untuk mengatur kunci pribadi dengan -i
opsi).
Masalah saya adalah karena semua pengguna mungkin ingin menyebarkan untuk hidup, kunci pribadi sistem git harus setidaknya dapat dibaca oleh grup dan SSH benar-benar tidak menyukai ini.
Berikut contoh kesalahan:
XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa
Saya telah melihat sekitar berharap untuk menemukan sesuatu dengan cara memaksa ssh untuk hanya melalui koneksi tetapi saya tidak menemukan apa pun kecuali orang-orang yang secara membabi buta mengatakan bahwa Anda seharusnya tidak membiarkan akses ke apa pun kecuali satu pengguna.
sumber
Anda BISA menggunakan file identitas yang dapat dibaca grup, KECUALI Anda pemilik kuncinya. Jadi, cukup atur file identitas yang akan dimiliki oleh, misalnya, pengguna root dan kemudian semua pengguna repositori git Anda diatur untuk pergi.
Manfaat yang bagus untuk ini adalah Anda tidak perlu sudo - solusinya akan lebih sederhana.
Perhatikan bahwa ini akan mengalami masalah asli lagi jika Anda menggunakan root untuk mendorong repo git Anda.
sumber
Kunci pribadi harus tetap pribadi. Anda seharusnya tidak membiarkan siapa pun membacanya.
di
post-receive
skrip kait, coba sesuatu seperti ini:sumber
ssh-keygen
,ssh-copy-id user@prod
. Pada prod:chmod 700 ~/.ssh
,chmod 600 ~/.ssh/authorized_keys
.git checkout...
(pada prod).post-receive
hook (mesin dev) dijalankan oleh pengguna yang mendorong perubahan (karena itu di bawah izin pengguna) sehingga mereka semua akan memiliki kunci yang berbeda, saya tidak bisa membantu yang pengguna akan. Ada duapost-receive
kait di dua server yang berbeda beraksi.