SVN + SSH Windows alatt

Hátha valaki még küzd vele.

Hozzávalók:

Töltsük le a két hozzávalót, csomagoljuk ki ahova tetszik, és jegyezzük meg nagyon az útvonalukat. A példában én a D:\progs\putty és a D:\svn útvonalakra csomagoltam ki a zipeket.

Készítsünk egy parancsikont, mely a PuTTy telepítési mappájában levő PAGEANT.EXE-re mutat. Ezt nevezzük el akárminek, a lényeg, hogy miután megvan, húzzuk be az Start menü Indítópult menüjébe (bátrabbak Registryből is betöltetthetik, akkor nem kell parancsikon).

Sajátgép -> Tulajdonságok, Speciális fül, alul környezeti változók.

A rendszer változói küzül keressük ki a PATH-et majd tegyük be a két program telepítési helyét. Én például az alábbi sztringet fűztem a végére:


D:\progs\putty;D:\svn\bin

OK.
Most a felhasználó változói közé hozzunk létre egy SVN_SSH nevű változót, a tartalma valami ilyesmi legyen:


plink -ssh -agent -l hron -load Peter -P 30222

Kifejtve:

  • plink: SSH program neve
  • -ssh: SSH kapcsolatot akarunk
  • -agent: használd a PAGEANT-ot.
  • -l: felhasználónév
  • -load: A paraméterül kapott nevű munkamenet adatait fogja használni a csatlakozáshoz. Értelemszerűen a PAGEANT-ba léteznie kell ilyen munkamenetnek.
  • -P: port, ha nem standard porton figyel az SSH. Úgy néz ki, a session-ból ezt az egy opciót nem veszi át.

A PAGEANT-ba konfiguráljuk fel az SSH kapcsolatunkat az SVN serverrel, és mentsük el olyan néven, amit a -load paraméter után adtunk meg (esetemben Peter). Ne használjunk ékezetet illetve szóközt a névben.

Az SSH-ba kétféleképp lehet authentikálni, tehát a következő két szakaszból csak a releváns beállításokat kell megtenni.

1) SSH authentikáció jelszóval
Ha nem kulccsal, hanem jelszóval authentikálunk a szerveren, akkor a SVN_SSH végére oda kell bökni egy ilyent:


-pw ezegynagyontitkosjelszo

és kész.

2) SSH authentikáció jelszó nélkül, kulccsal.
Kulcsos authentikációnál a helyzet kissé bonyolultabb, de távolról sem vészes.
Először is, győződjünk meg arról, hogy a munkamenetünkbe bekerült a SSH kulcsunk holléte is (Pageant: Connection - SSH - Auth), ha nem, ezt pótoljuk, és mentsük el ismét a munkamenetet.
Ezután a PAGEANT óra melletti ikonján jobbat kattintva válasszuk az Add Key menüt és tallózzuk ki a privát kulcsunkat. Ha jelszavas a kulcs, akkor ennél a pontnál rá fog kérdezni a PAGEANT a kulcshoz tartozó jelszóra.
Ezt a műveletet sajnos minden rendszerindítás után 1x meg kell tenni, mert a PAGEANT elfelejti a hozzáadott kulcsokat, enélkül pedig lehetetlen authentikálni a szerverrel.

Nagyjából kész is vagyunk. Nyissunk egy teljesen új konzolt (figyelem! Ne használjunk már megnyitott konzolt most, mert az még nem ismeri az új beállításainkat!), és máris használhatjuk az svn szervert.

Ami nagyon fontos: mivel egy kicsit másképpen működnek a dolgok ezzel az összeállítással, így a SVN URL-ekben ne adjunk meg gépnevet vagy felhasználónevet.
Ami tehát alapból így néz ki:


svn+ssh://hron@svn.mittudomain.hu/srv/svn/repos/hron/

Abból jelenleg csak ennyi marad:


svn+ssh:///srv/svn/repos/hron/

lévén a PAGEANT-ban már megadtuk a szervert, a SVN_SSH változóban pedig a nevünket.

Ráadás: Hogyan tudom használni a linux alatt generált privát kulcsomat windows alatt?
Nagyon egyszerűen. Fell kell másolni a privát kulcsot valami ideiglenes helyre, majd a putty telepítési mappájából el kell indítani a puttygen.exe-t. File -> Load private key, elkéri a jelszót, majd File -> Save private key, és .ppk kiterjesztéssel tetszőleges névvel el lehet menteni. Az így kapott kulcsot aztán meg lehet adni a PAGEANT-nak.

Hozzászólások

Persze. Valami nevet biggyessz a végére oszt kész.

Annyit érdemes hozzátenni még, hogy bár többféle SSH-s SVN szerverrel lehet használni, mindegyiken ugyanannak kell lenni a felhasználónévnek, és ugyanott kell figyelni az SSH-nak is. Ellenkező esetben a SVN_SSH környezeti változó okszerűen módosítandó a set parancs használatával.

Alapvetően azért készült ez a howto, mert sokan a cygwines SSH-val dolgoztatnak, de én nem vagyok hajlandó egy ilyen piti dolog miatt egy majdnem oprendszert felrakni. A PuTTY-ot meg amúgy is használom.

Upgrade az egészhez:

Rövid oknyomozás után az alábbi könnyítésekre bukkantam:

Az SVN_SSH-ból nyugodtan kiugorhat a '-l username' és a '-load session' rész, amennyiben nem a sessionhöz mentjük el a kulcsunkat, hanem globálisan. Ennek menete a következő:

Az Indítópultba behúzott PageAnt ikonon jobbklikkel kérjük le a tulajdonságait, és a cél megadásánál a parancsot egészítsük ki a PuttyGen-nel bekonvertált kulcsunk teljes elérési útjával (D:\progs\putty\id_dsa.ppk). (Elvben ha több kulcsunk van, akkor itt sorban meg lehet adni a kulcsok elérési útját, a pageant lesz szíves azokat betölteni, de ezt nem próbáltam még).
Ekkor a PageAnt minden loginkor megkérdezi a kulcshoz való jelszavunkat (idegesítő, de le is lehet altatni a gépet - akkor nem kéri).
Ezzel a módszerrel a régi stílusú svn+ssh://user@svn.mittudomain.com/srv/svn/repos/userke címek érvényesek lesznek megint. Az új svn és putty képes egymás közt lekomunikálni, hogy milyen szerver és milyen user. A kulcsot pedig intelligensen kiválasztja.
Arra figyeljünk, hogy ha az SSH nem standard porton figyel, mindenképpen legyen -P argumentum az SVN_SSH környezeti változóban. További körültekintést igényelnek a szóközt tartalmazó elérési utak - ezeket idészőjelek közé kell tenni.

Jelszavas SSH esetén pedig nem kötelező a jelszót megadni - viszont jelszó cache nincs, minden commitkor meg kell adni a jelszót -> érdemes megfontolni a publikus kulccsal való authentikációt.