Ezt az írást az utókor számára hagyom csak itt, hogy ha valaha, valaki ilyen hülye problémába fut, mint én, akkor ne kelljen egy 8-9 órás kálváriát végigjárnia, mint nekem, elolvasnia ötven ember különböző mélységű és minőségű bejegyzéseitől kezdve manuálokon (fúj) át mindenféle hülyeséget.

Apró komment a bejegyzés elé. Úgy hiszem, hogy a számítógép, illetve az ahhoz kapcsolódó alapvető technológiák bőven (és réges rég) elértek arra a szintre, ahol tömegek használják a mindennapi munkájukhoz, mely mindennapi munkának nem célja, csupán eszköze a gép. Valahogy olyan dolog kezd ez lenni, mint a mikrosütő, vagy az autó, ahol (habár nagyon-nagyon-nagyon nagy vonalakban tudom, hogy mitől működik) igazából foggalmam sincs, hogy a dolgot mi hajtja, mégis, tudom használni rendeltetésszerűen, és boldog vagyok tőle. Sajnos eléggé gyakorinak érzem, főleg számítástechnikai jellegű fórumokon (ezt ma nagyon éreztem, legalábbis), hogy a tudás hordozói szinte lenézik azokat az embereket, akik a segítségüket kérik, és olyan tömören és magas szintűen fogalmaznak, amennyire csak lehet. Ez persze jó arra, hogy valakinek a szakmai tudását csillogtassa, de arra semmiképp sem, hogy annak a problémáját, aki gyorsan valamit össze akar rántani, ami lehet, hogy nem atombiztos, de házi használatra elmegy, megoldja. Ezen most csak azért vagyok így felháborodva, mert ma egy rakás olyan tudás birtokába jutottam, amire nem voltam kíváncsi, és azt gondolom, hogy a probléma megoldásához nem is volt szükséges ezeken a dolgokon ilyen mélységig végigmenni, egyszerűen rá lettem kényszerítve, mert senki nem bír elég világosan fogalmazni, és egy átlagos számteches fórumon az ember három mondatonként talál valamit, amin elakad, és keresheti, hogy az akkor mit jelent. És őszinte leszek, nem, hogy nem érdekel, egyenesen nem akarom tudni ilyen mélységig (például) az SSH részleteit, egyszerűen azért, mert időt, energiát, és leginkább agykapacitást vesz el attól, ami a munkám lenne (kvázi, amire használnom kéne azt a nyamvadt technológiát). Miért nem megy ez olyan egyszerűen, hogy az ember kérdez egyet, és megmondják, hogy mit csináljon? Miért kell folyton megmagyarázni, akkor is, ha nem érdekel a magyarázat?... Annyi kismillió eszköz van, amit az ember nap, mint nap használ (és sikeresen használ) annélkül, hogy bármit is tudna arról, hogy mit csinál. Miért pont ezt kéne 100%-osan értenie annak is, akinek nem is ez a területe?...

Na mindegy, szóval most, hogy kimorogtam magam, jön az alapfeltevés, és a megoldás: adott egy tárhelyszolgáltató (CentOS Linux szerverrel), aki biztosít a tárhelyedhez SSH hozzáférést és futtatási jogokat, de ő maga nem üzemeltet SVN szervert. Ilyenkor világlik, hogy az ember telepít magának a tárhelyen levő fiókjára egy SVN szervert, és azt fogja használni. Az első probléma, hogy ezt hogy oldja meg? Erre még viszonylag könnyű a válasz, a szolgáltató fórumán viszonylag gyorsan találok 3-4, a felhasználók által korábban feltöltött szkriptet, amit elvileg copy-paste-elni kell, és megoldja. Konkrétan 3-at néztem meg, az elsőről látszott, hogy az Subversion 1.4-et tesz fel, na mondom, az kicsit régi. A második 1.6-ost telepít, le is futtatom, de az utolsó lépésben valami hibát dob. Szóval jön a harmadik script, ami szépen lefut, minden a helyén. Csinálok is egy teszt-repot, minden szép és jó. Gouranga van.

Az első "nem tetszik" érzés akkor jön, amikor megpróbálom a saját gépemre checkoutolni a tesztadatokat. Ekkor jön az első hiba, miszerint

   bash: svnserve: command not found

Erre még viszonylag hamar ráakadok, szintén a fórumokon, hogy valami .bashrc-be kell valami PATH bejegyzést irkálni. Copy-Paste. Persze, nem működik, még mindig. Nézegetem a fórumot, erre kiderül, hogy a bejegyzés 3 éves. Elgondolkodtató... Szóval megpróbálom lenyomozni, hogy a megoldás mennyire időtálló (ekkor már vagy 10 böngésző-tab szolgálja ezt a problémát), és hát igen, kiderül, hogy valamit valaki valamiben megváltoztatott, és ezért a .bashrc-t akár ki is dobhatom, mert igazából senki nem olvassa a tartalmát. Tök jó. Sebaj, valaki javasol egy elég kínaiul hangzó megoldást, hogy ha a publikus-privát kulcs párokból kettőt is bejegyzek egy oldalhoz, akkor az egyikhez hozzárendelhetem az említett svnserve-t. Jobb híján próbáljuk meg. Na igenám, de elvileg valami config file-okat is izélgetni kéne ehhez (amit alapból nem igazán szeretek, kicsit hasonló okokból, mint amiért egy pótkereket ugyan bármikor fel tudok tenni, és még az ablakmosót is röhögve utántöltöm, de azért egy hengercserét nem biztos, hogy szívesen levezényelnék), amik az én gépemen ráadásul nem is léteznek. Mindegy, létrehozom, megint oldalas copy-paste a fórumokról, és ezennel lett egy config file a .ssh-könyvtárban (később kiderül, hogy tök fölösleges ez ide, nem véletlenül nem volt ott, szóval mostanra már rég töröltem – elvileg annyi haszna lehetett volna, hogy rövidebb fantázianeveket adhattam volna az általam elérni kívánt szervereknek, amire meg semmi szükségem, mert csak összezavarja az embert – elvégre pl. a galilei.phy.bme.hu az elég egyértelmű, ellenben, ha elnevezem mondjuk bélaBá-nak, az lehet, hogy rövid, frappáns és vicces, de lehet, hogy egy évvel később már fogalmam sincs, hogy az mit is takar). Szóval van config-file, számomra nem túl világos bejegyzésekkel és okokkal, de van. Ugyanezt még a .subversion/config-ban is el kell játszani, ott egy úgynevezett alagutat kell beállítani, hogy az SVN tudja, hogy éppen mikor melyik SSH kulcsot hívja.

A dolog persze továbbra sem működik.

Ezen a ponton az egészet elölről kezdem. Nagyjából eljutok odáig, hogy kell az SSH kulcsos mizéria, amikor eszembe jut, hogy hátha az SVN-ig már el sem jut a dolog, és előbb meghal. És lőn.

Először is, nagyjából negyed óra/fél óra próbálkozás után (kicsit necces dolog egy távoli szerveren levő file-t folyamatosan változtatgatni, főleg, ha a text editorod nem képes egy terminálban megnyitott SSH kapcsolaton keresztül "csak úgy" látni egy távoli filerendszert – nem tudom, van-e olyan text editor, ami ezt tudná –, szóval a percenként letölt-átír-visszatölt egy idő után hihetetlen fárasztó tud lenni – egyébként egy idő után derengett, hogy van valami emacs nevű dolog, amit ilyenkor használni szoktak, és legyőzvén eredendő undoromat a dologgal szemben, sikerült megtanulnom elmenteni file-okat emaccsal és bezárni is őket – egyébként ez is hihetetlenül arrogáns, amikor egy szövegszerkesztő, amit billentyűparancsokkal lehet csak vezérelni, nem képes legalább csak egy fél sornyi segítséget mutatni arról, mondjuk az oldal alján vagy tetején, hogy mik a legfontosabb parancsok) egyértelművé vált, hogy a baj az, hogy az a parancs, amit írtak, hogy tegyem be az authorized_keys nevű file-ba, azt nem mindegy, hogy az ember hova teszi. Mielőtt miindenki idegeit szétfeszíteném: a megoldás, hogy azt a parancsot sortörés nélkül (de szóközzel leválasztva), egy sorba kell írni azzal a sorral, amelyik az ahhoz tartozó nyílt kulcsot tartalmazza, mégpedig a nyílt kulcs elé. Máskülönben semmi hatása nincs. Én elhiszem, hogy ennek valamitől triviálisnak kéne lennie (mondjuk nem értem, hogy mitől), de tény, senki nem közölte.

Az igazi sz*pás onnantól kezdődött, hogy erre rájöttem. Nem untatok tovább senkit a részletekkel, de az ezt követő legalább 3 órámat az vitte el, hogy rájöjjek, hogy mitől nem működik? Amikor már megvan a parancs, megvan, hogy hova kell beírni, és megvan, hogy hogyan, akkor miért nem működik? Bevallom, még mindig nem tudom a miértet, de úgy tűnik hogy az SSH a -i kapcsolóban megadott értéket felülírja az alapértelmezett kulccsal, ha van alapértelmezett kulcs. Csakhogy ez sehol nincs dokumentálva...

Szóval, ha olyan helyzetbe jutsz, hogy egy olyan cégnél akarsz SVN repokat tartani, aki nem tart karban központilag egy SVN szervert (alapvetően ilyen céggel ne szerződj, de ha mégis, akkor) és ezért neked kell megszervezni a dolgot, a következő az eljárás:

  1. A cég fórumain szerezd be azt a kódot, ami telepíti az SVNt a saját home könyvtáradba. Ezt azért fontos, mert ez elvileg gépről gépre változhat, tehát a fórumosok, akik ugyanazokat a gépeket használják, mint te, valószínűleg jobban tudják.
  2. Menj a home könyvtáradban a .ssh könyvtárba és írd be kétszer, hogy ssh-keygen -t rsa -f [valami file neve, ami még nem létezik] (persze két különböző filenevet használj). A legfontosabb: Ne az legyen a file neve, hogy id_rsa, id_dsa vagy identity. A végén mondom, miért.
  3. Annak a pub-file-nak az elejére amelyiket SVNre használod, szúrd be (de ne külön sorba), hogy command="/[A home könyvtár elérési útvonala]/bin/svnserve -t –tunnel-user=[A felhasználói név, amit szeretnél, ha megjelenne a commitokban] -r [A repository teljes elérési útja]"
  4. Az előző lépésekben kapott két pub végződésű file-t töltsd fel a szerveren a .ssh könyvárba, és a következő paranccsal mind fűzd egybe őket: cat [Egyik file neve] [Másik file neve] > authorized_keys
  5. A saját gépeden a home könyvtáradban a ./subversion/config file-ban a [tunnels] alatti sorok valamelyikébe be kell írni, hogy ssh=ssh -q -i /[A home könyvtár elérési útvonala]/.ssh/[A publikus kulcs, amibe a command-ot beszúrtad]

Ezzel elvileg kész vagyunk. Azért volt fontos, hogy ne legyen egyetlen kulcsnak sem id_rsa, vagy hasonló neve, mert úgy tűnik, hiába bármilyen kapcsoló, az SSH minden esetben, amikor van jelen alapértelemezett kulcs, akkor azt használja. Na főleg ez az "apróság" volt az, ami iszonyat időt elvitt az életemből... És még mindig nem értem teljesen az okait, de legalább ez most működik így.

Utoljára módosította SAdam 2010.XII.14 17:49-n
PermaLink
100%

Hozzászólások (8)

Ulmar hozzászólása 2010-12-14 13:20-kor

Megértem a frusztrációdat, de egy picit magad ellen beszélsz, amikor három órán át írod a problémádat egy-két összefoglalt pont helyett. Egy picit nehezen olvashatóvá válik a cikked, hasonlóan a nehezen olvasható és kevéssé hasznos szakmai dumákhoz. Legalább a végén összefoglaltad, ami egy nagy plusz.

Amúgy örülök, hogy sikerült végül megoldanod a problémád, használd egészséggel.


SAdam hozzászólása 2010-12-14 17:44-kor

Tudom, én sem vagyok jobb a deákné vásznánál (mellesleg, ti tudjátok, hogy ez a mondás honnan jön? Én el nem tudom képzelni...)

Egyébként azt tényleg én rontom el, hogy valamiért az SSH ignorálja a -i kapcsolót, ha van default kulcspárom, vagy ezt is meg lehet bütykölni valahogy, csak még nem jöttem rá?


Wigy hozzászólása 2010-12-14 18:00-kor

Gratulálok! Szintet léptél, mert legyőzted az svn+ssh-t.

A Subversion írói gondosan ügyelnek rá, hogy q*va nehéz legyen bekonfigurálni biztonságos távoli elérést a repódhoz. Más magyarázatot nem találok rá, hogy mind a https: mind a svn+ssh: bekonfigurálásához sok energia kell.

https: esetén csak a repó admin szív sokat, a usernek könnyű minden (feltéve, hogy nem akar jelszót változtatni).

svn+ssh: esetén a user is szív, mert elég kevesen értik, hogyan kell kulccsal ssh-zni, és a jelszó alapú azonosítást nehezíti, hogy akár 1 svn tranzakció alatt is több kapcsolatot nyit a kliens (mindannyiszor jelszót kérve).


SAdam hozzászólása 2010-12-15 03:01-kor

A dolog egyre tovább bonyolódik. Eddig minden simán ment, viszont hirtelen megint nem műxik. A vicc az, hogy hozzá sem nyúltam, viszont egyszer csak elkezdtem SVN hibákat kapni. Némi kutatás után úgy tűnik, a következő a helyzet:

Ugyebár most két privát kulcsom van, az egyikhez tartozó publikus kulcsban van egy "command" bejegyzés, a másikban nincs. Na most az van, hogy ha ssh-val megpróbálok belépni, akkor akármit adok meg a -i kapcsolóban, mindig azzal a privát kulcsommal lép be, amelyikhez nem tartozik command. A dologban az a legidegesítőbb, hogy ha átmásolom UPi szerverére a privát kulcsaimat, és megpróbálok onnan belépni, akkor ott helyesen interpretálja a -i kapcsolót. Úgy tűnik, két dolog lehetséges:

  1. Utál engem a világ, és egyszerűen csak ellenem fordult (erre amúgy egyre erősebben gyanakszom egyéb jelekből is).
  2. Valamit a tegnapi kamatyolás során sikerült elállítanom a gépemen, ami miatt az ssh-m aberráltan viselkedik (elsőre a /etc/ssh_config-ra gyanakodtam, de ott minden ki van commentelve, úgyhogy az nem lehet hunyó).

SAdam hozzászólása 2010-12-15 03:09-kor

(Válaszképp erre)

<blockquote> A dolog egyre tovább bonyolódik. Eddig minden simán ment, viszont hirtelen megint nem műxik. A vicc az, hogy hozzá sem nyúltam, viszont egyszer csak elkezdtem SVN hibákat kapni. Némi kutatás után úgy tűnik, a következő a helyzet:

Ugyebár most két privát kulcsom van, az egyikhez tartozó publikus kulcsban van egy "command" bejegyzés, a másikban nincs. Na most az van, hogy ha ssh-val megpróbálok belépni, akkor akármit adok meg a -i kapcsolóban, mindig azzal a privát kulcsommal lép be, amelyikhez nem tartozik command. A dologban az a legidegesítőbb, hogy ha átmásolom UPi szerverére a privát kulcsaimat, és megpróbálok onnan belépni, akkor ott helyesen interpretálja a -i kapcsolót. Úgy tűnik, két dolog lehetséges:

  1. Utál engem a világ, és egyszerűen csak ellenem fordult (erre amúgy egyre erősebben gyanakszom egyéb jelekből is).
  2. Valamit a tegnapi kamatyolás során sikerült elállítanom a gépemen, ami miatt az ssh-m aberráltan viselkedik (elsőre a /etc/ssh_config-ra gyanakodtam, de ott minden ki van commentelve, úgyhogy az nem lehet hunyó).
</blockquote>

Végül nagyjából egy órányi szenvedés után úgy döntöttem, kijelentkezem a felhasználói fiókomból és visszalépek. Most minden tök jól működik. És persze nem értem, hogy miért.

Azt hiszem, még legalább hét évig szopnia kell Fehérlófiának...


Descant hozzászólása 2010-12-15 09:59-kor

(Válaszképp erre)

<blockquote>

Valamit a tegnapi kamatyolás során sikerült elállítanom a gépemen, </blockquote>

$Adam ne kamatyolj a gépeddel!


UPi hozzászólása 2010-12-15 10:57-kor

Ez az, mert kivetjük rád is a kamatyadót!


SAdam hozzászólása 2010-12-16 05:30-kor

Továbbra is csak nagyon viccesen tudok commitolni, konkrétan, minden egyes commit előtt el kell játszani a "kilépés a felhasználói fiókból"–"belépés a felhasználói fiókba" játékot, így a feltöltésre szánt időt nem számítva is percekig tart egy commit (mindent bezárni, kilépni, belépni, mindent újra megnyitni). A dolog mögött vagy az van, hogy egy idő elteltével az nálam futó ssh nem veszi figyelembe, hogy melyik identityvel akarok kapcsolódni, vagy az van, hogy a szerver oldalán nem fut le az a command, amit az adott publikus kulcsba beírtam. De nem tudom, hogy nyomozhatnék tovább. Azt minden esetre kiderítettem, hogy Mac OS X alatt a logint követően automatikusan elindul valami ssh-agent dolog, ami elvileg tárolja a kulcsaimat, így lehet, hogy ez zavar be (ezt alátámasztani látszik, hogy logout-login kombóval általában újra megy a dolog). Kezd ez a dolog felettébb idegesítővé válni, bár tény, hogy amíg egyedül használom a repositorymat, addig nagy gondok ebből nem lehetnek...

Tagek:
 

ApocalypseKÖZÖS | FrissVáltozások | TémaKatalógus | Index | Térkép | Random Page
Belépés | Regisztrálok
Ez az oldal nem változtatható | Régebbi változatok | Hivatkozásai | Add a kedvenceimhez
Utoljára módosította SAdam 2010.XII.14 17:49-n