SSH, grup tarafından okunabilir izinlere sahip bir anahtar kullanılmasına izin vermiyor


9

liveŞube itildiğinde canlı bir sunucuya dağıtan bir geliştirme git sunucusu var . Her kullanıcının kendi girişi vardır ve bu nedenle post-receivecanlı dağıtımı yapan kanca kendi kullanıcısı altında çalıştırılır.

Ben git sistemine yıllardan aittir uzaktan canlı sunucularını eklemek için' ben anahtar seti uydurmazdık uzak canlı sunucuda kullanıcılara yetkili tuşları olarak genel anahtarları korumak zorunda kalmak istemiyorum (In post-receivekanca kullanıyorum seçeneği $GIT_SSHile özel anahtarı ayarlamak için -i).


Benim sorunum, tüm kullanıcıların yaşamak için dağıtmak isteyebileceği için git sisteminin özel anahtarının en azından grup tarafından okunabilir olması ve SSH'nin gerçekten bundan hoşlanmamasıdır.

Hatanın bir örneği:

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

Ben sadece bağlantı ile geçmesi için ssh zorlama bir şey bulmak için etrafa baktım ama insanlar körü körüne tek bir kullanıcı dışında bir şeye erişim izin vermemen gerektiğini söyleyen başka bir şey buldum.

Yanıtlar:


5

İşte güzel, basit ve güvenli bir yol.

Ssh transferi için yeni bir kullanıcı oluşturun, ben git-sync olarak adlandıracağım. Git deposu için grup üyeliğine sahip sunucuda benzer bir kullanıcı oluşturun. Senkronizasyon kullanıcısı için genel anahtarı, kullanıcıların yetkili_anahtarlar2 dosyasına ekleyin. Git kullanıcılarının tüm gitgroup üyeleri olduğunu varsayıyorum. Git-sync kullanıcısının da bu grubun üyesi olduğundan emin olun.

Şimdi / etc / sudoers dosyanızı aşağıdaki gibi bir satır içerecek şekilde düzenleyin:

%gitgroup ALL=(git-sync) NOPASSWD: /usr/bin/git

Bu, gitgroup grubunun herhangi bir üyesinin / usr / bin / bit komutunu bir şifre olmadan git-sync olarak çalıştırmasına izin verir.

Şimdi alma sonrası kancanıza böyle bir şey koyun:

sudo -u git-sync /usr/bin/git push origin

Bu aradığımdan daha iyi, teşekkürler!
Jessie Ross

11

Sen CAN Anahtarın sahibiyseniz SÜRECE, grup okunabilir kimlik dosyaları kullanın. Yani, sadece kök kullanıcıya ait olan kimlik dosyasını ayarlayın ve sonra tüm git deposu kullanıcılarınız gitmeye ayarlandı.

Bunun güzel bir yararı sudo'ya ihtiyacınız olmamasıdır - çözüm daha basit olacaktır.

Git deponuza basmak için root kullanıyorsanız, bunun orijinal soruna tekrar gireceğini unutmayın.


2
Bu harika ve "yapma" cevaplarından çok daha iyi. Teşekkürler!
Ian McGowan

2
Permissions 0640 for 'id_rsa' are too open.

Özel anahtar gizli kalmalıdır. Kimsenin okumasına izin vermemelisiniz.

Ben git sistemine yıllardan aittir uzaktan canlı sunucularını eklemek için' ben anahtar seti uydurmazdık uzak canlı sunucuda kullanıcılara yetkili tuşları olarak genel anahtarları korumak zorunda kalmak istemiyorum (In post-receivekanca kullanıyorum seçeneği $GIT_SSHile özel anahtarı ayarlamak için -i).

  1. geliştiriciden prodüksiyon sunucusuna ssh için bir anahtar çifti ayarlayın
  2. içinde post-receivekanca komut, böyle bir şey deneyin:

    if [ "live" == "$branch" ]; then
        ssh -t user@prod "git --work-tree=... --git-dir=... checkout -f"
    fi
    

Nasıl "ssh dev için üretim sunucusuna bir anahtar çifti kurmak", ben bu bir sorun yaşıyorum. Halihazırda 2 tane var.
Jessie Ross

1
Dev üzerinde: ssh-keygen, ssh-copy-id user@prod. Ürün üzerinde: chmod 700 ~/.ssh, chmod 600 ~/.ssh/authorized_keys.
quanta

1
Sorun, çok sayıda kullanıcı olmasıdır, bu nedenle sunucuda bulunan her proje tarafından süreleri düzenlemek isteyen her kullanıcı için tekrarlamak zorunda.
Jessie Ross

Hayır. Yalnızca iki kullanıcı daha kurmanız gerekir: biri geliştiriciden eşyaya, diğeri ise git checkout...(eşyada) çalıştırmak için .
quanta

post-receiveHepsi farklı anahtarlara sahip olacak, böylece kanca (dev makine) Ben öyle olacak kullanıcı yardımı yapamaz, (bu nedenle kullanıcılar izni altında) bir değişiklik bastırıyor kullanıcı tarafından çalıştırılır. post-receiveÇalışmakta olan iki farklı sunucuda iki kanca vardır .
Jessie Ross
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.