Yalnızca Git deposunu kullanmak için sınırlı ayrıcalıklara sahip SSH kullanıcısı oluşturma


12

SunOS sunucumda ssh ile uzaktan kullandığım bir git depom var

git clone ssh://myUser@mydomain.com/path/to/git

Şimdi bu depoya erişebilmek için daha fazla kullanıcı eklemem gerekiyor, ancak nasıl yapılacağından emin değilim.

SSH'ye bir testUser ekledim , ancak bu kullanıcı ayrıcalıklarını yalnızca git kullanacak şekilde sınırlayamıyorum.

testUser tüm sunucuyu ssh yapabilir ve tüm sunucuya gözatabilir.

Sadece git'e uzaktan erişebilen, klonlamak / çekmek / itmek vb. İçin nasıl kullanıcı oluşturabilirim?

Teşekkürler

Yanıtlar:


12

Birden çok git-shell kullanıcısı (ve depolara erişimi paylaşabilmeleri için gerekli grup ve grup izinleri) ayarlamak yerine tek bir kullanıcı altında gitolit kullanmayı düşünebilirsiniz .

gitolite , sunucudaki tek bir normal kullanıcı altında çalışır ve Git depolarına erişimi farklılaştırmak için SSH genel anahtarlarını kullanır ( gitolitin SSH tabanlı kimliğini nasıl yaptığının bazı ayrıntıları için “ gitolitin ssh'yi nasıl kullandığı ” konusuna bakın ). gitolit depo başına, dal başına ve hatta bazı yol başına erişim kontrolü sunar.


1
Gitosis için +1 ... Tam olarak bu kurulum için yapıldı.
Jeremy Bouse

12

Temel olarak iki seçeneğiniz var.

  1. Yukarıda belirtildiği gibi, sunucuda kullanıcı oluşturduğunuzda, kabuklarını git-shell ( kitap girişi ) olarak ayarlayın. Bu, kullanıcının SSH üzerinden oturum açmasına izin verir, ancak normal, tam özellikli bir kabuk (ör. Sh, bash, vb.) Çalıştırmak yerine, sadece git işlevine erişim sağlayan git-shell çalışacaktır.

  2. Alternatif olarak, havuzlarınızı TCP ( git-deamon kullanarak ) veya HTTP / HTTPS gibi başka bir protokol aracılığıyla kullanılabilir hale getirebilirsiniz . Ancak böyle bir senaryoyu salt okunur erişim için öneririm.

Kullanıcılarınız için 'push' işlevselliğini desteklemek istediğinden bahsettiniz, bu yüzden gerçekten # 1 seçeneğiyle devam etmelisiniz.


5

kabuklarını git-shell olarak değiştirmeniz gerekir, bu da yalnızca git işlevlerine erişmelerini sağlar.


Teşekkürler topdog. Temel olarak kullanıcı Mac'inde kendi git kabuğunu kullanacaktır. Gerçekten sunucuya ssh yapabilmesini istemiyorum. Yani git repo, testUser bilgisayarından / Mac'ten alanadim.com'daysa, terminalde ssh: //myUser@mydomain.com/path/to/git klonunu sorabilir, daha sonra repoyu indirebilir. Ben sadece şimdi kabuğunu git-shell'e koymayı denedim Klon çağrılırken sorulur ancak şifre reddedilir.
Bach

myUsers kabuğunu git-shell olarak ayarlamanız gerekir, eğer sunucuda yapmasını istediğiniz tüm git komutlarını çalıştırır ve kabuk koyamazsanız. parola istemleri için lütfen tuşları kullanın. Ücretsiz git kitap bir sunucu görünüm üzerinde GYTE daha detaylı bilgi için progit.org/book/ch4-0.html
topdog

kitap referansı için teşekkürler! çok yararlı. Yine de kurulum ile ilgili sorunları olan, gitolit kullanarak sona erdi.
Bach

git-shell : "Bu, SSH hesaplarının kısıtlı Git erişimi sağlaması için bir giriş kabuğu. Yalnızca çekme / itme işlevini uygulayan sunucu tarafı Git komutlarının yanı sıra git-shell-komutları adlı bir alt dizinde bulunan özel komutların yürütülmesine izin verir. kullanıcının ana dizini. " Linux'ta, "/ etc / shells" e "/ bin / git-shell" i ve ardından "usermod --shell / bin / git-shell $ USER" ekleyin. Btw, git kitabı şimdi git-scm.com/book/en/ch4-0.html adresinde
David Tonhofer

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.