P°inß╣φme vßm krßtk² nßvod, jak zp°φstupnit CVS pro vzdßlen² p°φstup.
Velkß Φßst Open Source projekt∙ vyu╛φvß jako software na sprßvu verzφ CVS.
Existujφ sice lep╣φ alternativy, ale CVS je v tΘto oblasti tΘm∞° standardem.
Nainstalovat CVS nenφ velk² problΘm, v dob∞ RPM Φi PKG to zvlßdne ka╛d². O n∞co
slo╛it∞j╣φ je situace, kdy chcete k CVS p°istupovat vzdßlen∞. A touto tΘmatikou
se zab²vß tento Φlßnek.
Existuje vφce zp∙sob∙, jak p°istupovat vzdßlen∞ k CVS. Jsou to p°φstup p°es
rsh, autentifikace p°es heslo (pserver), CSSAPI a Kerberos. Rsh mß smysl leda
na uzav°enΘ sφti (t°eba za firewallem), kde si v╣ichni u╛ivatelΘ navzßjem v∞°φ.
O n∞co lep╣φm °e╣enφm je autentifikace u╛ivatel∙ p°es Kerberos, CVS zvlßdß jeho
verzi 4. S nßstupem verze 5 auto°i vytvo°ili obecnΘ rozhranφ CSSAPI. Pro mΘ
·Φely se v╣ak nejvφce hodφ pserver. Je snadn² na instalaci a konfiguraci a
zßrove≥ umo╛≥uje vytvo°it si virtußlnφ u╛ivatele Φi vymyslet existujφcφm
u╛ivatel∙m hesla platnß jen pro CVS. Tak╛e pokud ·toΦnφk bude odposlouchßvat
va╣i relaci, s CVS heslem vß╣ server nenabourß.
Prvnφ Φßst konfigurace pserveru musφte provΘst jako root. Je t°eba p°idat do
sφ╗ov²ch slu╛eb CVS. Do souboru /etc/services
vlo╛te tuto
°ßdku:
service cvspserver
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/cvs
server_args = -f --allow-root=/home/literakl/CVSROOT pserver
}
V obou p°φpadech parametr --allow-root
ukazuje na CVSROOT,
kter² bude takto zp°φstupn∞n p°es pserver. Pokud mßte vφce repozitß°∙, m∙╛ete
jej pou╛φt vφcekrßt.
V tuto chvφli je t°eba je╣t∞ restartovat inetd
, respektive
xinetd
. Pod RedHatem a spol. spus╗te
$ /etc/init.d/inet reload
respektive
$ /etc/init.d/xinetd reload
Nastavenφ CVSROOT
Nynφ je t°eba zinicializovat CVSROOT. P°ihlßsφme se jako u╛ivatel vlastnφcφ
adresß° CVSROOT, v tomto p°φpad∞ literakl a spustφme
$ cvs -d /home/literakl/CVSROOT init
Tφm se nßm vytvo°il adresß° /home/literakl/CVSROOT/CVSROOT
obsahujφcφ spoustu administrativnφch soubor∙. Mezi nimi nßm v╣ak chybφ soubor
passwd
, kter² je urΦen prßv∞ pro vzdßlen² p°φstup. Jeho obsah je
nßpadn∞ podobn² systΘmovΘmu souboru /etc/passwd
. Ka╛d² °ßdek
obsahuje jedno a╛ t°i polφΦka odd∞lenΘ dvojteΦkou. Prvnφ polφΦko urΦuje
p°φstupovΘ jmΘno pro CVS. Tφmto jmΘnem se budete logovat do CVS. DruhΘ polφΦko
urΦuje heslo za╣ifrovanΘ pomocφ funkce crypt
. A koneΦn∞ poslednφ
polφΦko urΦuje skuteΦnΘho u╛ivatele na systΘmu. CVS bude provßd∞t v╣echny zm∞ny
jeho jmΘnem.
Rozeberme si pravidla na praktickΘm p°φklad∞:
$ cat /home/literakl/CVSROOT/CVSROOT/passwd
pub::pubcvs
literakl:HTRphPBvKJtjA:literakl
oazanon:TXiF1923PHrtI:oazanon
Prvnφ °ßdek urΦuje, ╛e CVS u╛ivatel pub
nepot°ebuje ╛ßdnΘ heslo
a je namapovßn jako systΘmov² u╛ivatel pubcvs
. Takov² u╛ivatel
v∞t╣inou mφvß p°φstup jen ke Φtenφ. To snadno zajistφte, pokud vytvo°φte
skupinu cvsusers
, do kterΘ p°idßte u╛ivatele pubcvs
,
literakl
a oazanon
a dßte tΘto skupin∞ prßvo Φtenφ na
cel² CVSROOT.
$ groupadd cvsusers
$ vi /etc/group
cvsusers:x:503:pubcvs,literakl,oazanon
a v novΘm shellu
$ chmod -R g+r-w /home/literakl/CVSROOT
$ chgrp -R cvsusers /home/literakl/CVSROOT
Dal╣φ °ßdky definujφ dva u╛ivatele s heslem, kte°φ jsou namapovßni na stejnΘ
u╛ivatele, kte°φ ji╛ existujφ v systΘmu. Takto jsme jim urΦili hesla pro CVS,
kterß by m∞la b²t odli╣nß od systΘmov²ch hesel.
Jen╛e jak ta hesla za╣ifrujeme? S Perlem je to hraΦkanejsem autorem)
$ vi cvspassword.pl
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";
$ chmod +x cvspassword.pl
$ ./cvspassword.pl heslo
Tφmto konΦφ konfigurace na stran∞ serveru.
Klient
U╛ivatelΘ p°istupujφcφ z cizφho serveru musφ nastavit CVSROOT a zalogovat se.
Je dobrΘ ulo╛it prom∞nnou CVSROOT do souboru ~/.profile
:
export
CVSROOT=:pserver:literakl@localhost/home/literakl/CVSROOT
Zalogujeme se pomocφ p°φkazu cvs login
:
$ cvs login
Logging in to :pserver:literakl@localhost:2401/home/literakl/CVSROOT
CVS password: heslo
Od tΘto chvφle m∙╛eme p°istupovat k CVS vzdßlen∞ p°es pserver.
Pokud CVS neovlßdßte, mohu doporuΦit Φlßnek na
Rootovi a v
Linuxov²ch novinßch.
Diskuse k tomuto Φlßnku
My pro nase projekty pouzivame prave prenos CVS pres SSH a jsme s tim naprosto spokojeni.
pri pouziti SSH si muzu vytvorit klic na serveru a na klientovi a nemusim pouzivat zadne heslo.
Proste pouzivam
#>cvs checkout
#>cvs update
#>cvs add test.c
#>cvs commit
... :) ...
ahoj, to heslo u klasickeho pserveru se take zadava jenom jednou.
mohl bys tu popsat presny postup, jak na to ssh? docela by mne to zajimalo. diky
Pristup pres SSH je vcelku jednoduchy. Staci nastavit 2 promenne prostredi a je to.
Prvni promenna je CVSROOT=:ext:server.domena:/adresar/na/serveru
A druha:
CVS_RSH=ssh
Na serveru cvs nemusi bezet, jako pri pristupu pres pserver. Dale je pak rozdil, ze se nepouziva prikaz cvs login a cvs logout, ale heslo se zadava pri kazdem prikazu. Chci-li si usetrit zadavani hesla, musim pro ssh vygenerovat klice a spravne je nahrat do konfigurace ssh.
Klice se generuji pomoci prikazu: ssh-keygen -t rsa
Tento prikaz vygeneruje dva soubory: id_rsa - privatni klic, ten je ulozen na klientovi v adresari $HOME/.ssh
a id_rsa.pub - ten patri na server. Jeho obsah se prida do souboru $HOME/.ssh/authorized_keys
Pak by vse melo chodit bez otazky na heslo. Podobne se lze pripojit i na CVS server z Windowsu, ale to uz je trochu jine tema.
Pavel
Todle vypada jeste jednoduseji nez to delam ja :)
Ja to delam podobne, ale presto trosku jinak.
Jedinny rozdil je v pouziti souboru config v ./ssh
Tady je posup jak rozchodit cvs pres ssh:
1) na cvs serveru rozjet ssh
2) na klientovi (v ~/.profile) nastavit:
export CVSROOT=cvs:/home/cvs
export CVS_RSH=ssh
3) na klientovi vytvorit ~/.ssh/config s obsahem:
Host cvs
Hostname 192.168.1.100
Port 22
Compression yes
User cdave
IdentityFile ~/.ssh/identity
4) vygenerovat klic na klientovi (klidne bez hesla): ssh-keygen
5) pridat prislusny radek z klient:~/.ssh/identity.pub do server:~/.ssh/authorized_keys
A uz by to melo svistet!