Nepoužívate SSHFS? Mali by ste.


  • Zdieľať na Google+

V živote developera príde skôr či neskôr k bodu, keď začne používať niektorý zo systémov pre riadenie revízií. Existuje ich niekoľko (Git, SVN, Mercurial,…), ale každý z nich si vyžaduje podporu na strane hostingu. My vám teraz prinášame krátky návod, ako môžete úplne jednoducho pracovať s týmito systémami u nás.

Na srigiho článok o RSYNC nepriamo nadviazal svojím blogpostom Vlado Kriška. Píše v ňom o SSHFS a jeho možnosti využitia pri deploymente. Po jeho prečítaní sme si povedali, že túto featuru treba spropagovať čo najširšiemu publiku. Pre jej využitie potrebujete mať ľubovoľný linuxový stroj alebo putty a aktivovanú službu shell konto. Pri iných hostingoch si dajte pozor na podporu SSH pripojenia.

SSHFS (SSH File System) je file system klient, ktorý umožňuje prácu s adresármi a súbormi na vzdialenom serveri. Umožňuje tiež mount adresárov zo servera na lokálny stroj a presne túto vlastnosť potrebujeme využiť.

Najprv si budete musieť nainštalovať na svoj stroj samotné SSHFS. Používatelia Ubuntu a iných Debian-based distribúcií pomocou príkazu apt-get install sshfs a používatelia Fedory a CentOS zas príkazom yum install sshfs.

Teraz si môžeme pripojiť celý svoj webový projekt na nazovdomeny.sk mountnúť do lokálneho stroja pomocou príkazu: sshfs login@nazovdomeny.sk:/ lokalnazlozka/

Tento príkaz si vyžiada heslo. Aby sme sa však do budúcna vyhli opakovanému zadávaniu hesla, použijeme návod z blogpostu o RSYNC. Pre zjednodušenie ho vložíme aj sem.

krok #1 – vygenerovanie SSH kľúčov

Ak ešte nemáte vygenerovaný vlastný pár SSH kľúčov, zadajte do konzoly príkaz

ssh-keygen -t rsa -C "VAS@EMAIL.SK"

Prepínačom -t zvolíte typ vygenerovaných kľúčov. RSA je najbezpečnejšou dostupnou voľbou. Prepínač -C nastavuje komentár (je možné ho nájsť na konci verejného kľúča). Komentár umožní ľahšie identifikovať jednotlivé kľúče.

Po odoslaní príkazu sa program opýta na cestu, kam súbory s kľúčmi uložiť. Postačí potvrdiť defaultné nastavenie. Následne sa opýta na heslo, ktorým sa kľúče zašifrujú. Kľúče môžete na disk uložiť aj nešifrovane, ale nie je to najmúdrejšia voľba. Odporúčam zadať silné heslo (passphrase). Po tomto kroku sú kľúče vygenerované do adresára .ssh vo vašom domovskom adresári.

krok #2 – nahranie verejného kľúča na webserver

Pripojte sa pomocou FTP klienta do žiadaného FTP účtu a vytvorte v hlavnej zložke adresár .ssh (áno, na začiatku je bodka). Do tohto adresára nahrajte súbor z vášho disku .ssh/id_rsa.pub a premenujte ho na authorized_keys. Tento súbor musí obsahovať zoznam verejných kľúčov, ktoré sú oprávnené prihlásiť sa k danému FTP kontu. Vďaka postupu s premenovaním uložíte do authorized_keys ako prvý váš vlastný verejný ssh kľúč. V súbore môže byť viac verejných kľúčov, na každom riadku jeden. Je dôležité, aby ste jednotlivé verejné kľúče uložili bez zalomenia (ako jeden dlhotánsky riadok)!

P.S. V niektorých prípadoch, napríklad pri použití mod_sftp sa vyžaduje formát RFC 4716. Ten dosiahnete jednoduchým skonvertovaním už vytvoreného verejného kľúča
ssh-keygen -e -f privatny_kluc > kluc_v_novom_formate

Mountnutý hostingový adresár sa stane súčasťou lokálneho súborového systému a sú pre neho dostupné všetky bežné operácie. Napríklad aj na začiatku spomínané systémy na správu revízií ako Git, SVN, Mercurial.

Veľmi jednoducho si to môžete vyskúšať napríklad skopírovaním rsync podkladov z nášho github repozitára do nového adresára rsync_test pomocou série príkazov:

  • cd lokalnazlozka/
  • mkdir rsync_test/
  • cd rsync_test/
  • git clone git://github.com/websupport-sk/screencast-rsync.git

Teraz uvidíte na vašom hostingu v zložke rsync_test srigiho podklady k blogpostu.

Samozrejme Git aj ostatné systémy majú oveľa širšie využitie, ako sme použili v teste. Tomu by sme sa však mohli venovať v ďalšom blogposte. Zatiaľ vám pre inšpiráciu odporúčame prečítať si, ako sa dá využíť systém Mercurial pre deployment blogu alebo aký Git workflow majú chalani zo Superfaktura.sk. Čerešničkou na záver by mohol byť tento vymakaný interaktívny tutorial na Git za 15 minút

P.S.: Stále hľadáme nových developerov a ak máte dobrý tip, odmeníme vás unlimited hostingom a programom cream. Pozrite sa na developer.websupport.sk

Komentáre

  • 5ulo
    Odpovedať
    Autor
    5ulo

    nejaky ten rok dozadu som podobnu vec rozoberal tu:
    http://howto.blbosti.com/2010/09/mount-a-remote-ssh-folder-in-ubuntu-cmd-and-gui/
    mozno niekomu pride vhod aj GUI

  • blade
    Odpovedať
    Autor
    blade

    Keby to radšej funguje nejak jednoduchšie (ako GitHub, Bitbucket, etc.), na obyčajnom hostingu a aj pod Windowsom. Takto má navyše prístup k celému shellu každý, kto má mať prístup na git, nie?

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      Pre windowsákov je tu putty v kombinácii so službou shell konzola. Resp. ešte linux vo virtuálnej mašine, napríklad vo Vmware player.

  • mathio
    Odpovedať
    Autor
    mathio

    Ked uz mate shell pristup na server, bolo by pohodlnejsie ak by tam rovno bol nainstalovany git / svn klient, nie?

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      Technicky to je samozrejme možné, ale z bezpečnostných dôvodov do toho nechceme momentálne ísť.

  • alian
    Odpovedať
    Autor
    alian

    Objavil som ho v 2009 odvtedy aktivne pouzivam http://alian.info/2009/03/pripojenie-vzdialeneho-adresara-cez-ssh/

  • newPOPE
    Odpovedať
    Autor
    newPOPE

    Pekne. Ale dost nebezpecne 🙂

    Prave kvoli tomuto
    „Teraz uvidíte na vašom hostingu v zložke rsync_test srigiho podklady k blogpostu.“

    Samozrejme to niekomu vyhovovat moze niekomu nie.

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      Chceli sme len ilustrovať, ako ľahko možno nahodiť celý projekt. Napríklad pre tých, čo by si radi prešli screencast od srigiho.

  • dash
    Odpovedať
    Autor
    dash

    Kratky navod a lahko? Ja som ajtak, ale urcite by som to nezvladol 😉

    Skuste nieco cez 1 klik.

  • eto
    Odpovedať
    Autor
    eto

    Vsetko by bolo pekne, ale z tohoto clanku mi stale nebolo celkom jasne ci aj vas hosting podporuje subor `authorised_keys`. Na helpdesku mi povedali, ze public keys nepodporujete, ale podla clanku a skutocnosti je stav opacny. Zrejme maly glitch.

    Este krajsie by bolo, keby bola sprava public keyov urobena cez webadmin, predsalen mohi maju problem s prikazovym riadkom.
    A najkrajsie by bolo nastavene sshd tak aby robil keepalives na klienta (tzn periodicky kontroloval ci je klient online):

    (standardne v:) /etc/ssh/sshd_config

    # Nejka rozumna hodnota ako casto „pingovat“ klienta (v sekundach).
    ClientAliveInterval 20

    # Po kolkych nezodpovedanych „pingoch“ povazuje server
    # klienta za odpojeneho.
    # Cize ak je interval 20s a tato hodnota je 3, klient ma cca 60 sekund
    # na odpoved
    ClientAliveCountMax 3

    Momentalne ma vas ssh server odstrihne po dlhsom case necinnosti (alebo to ma na svedomi paranoidne nastaveny firewall mojho ISP) co moze byt velmi neprijemne, najma ak clovek manualne edituje subory rovno na hoste (viem prasacina, ale niekedy sa to zide).

    Z uzivatelskeho hladiska je tiez prijemnejsie, ked to robi priamo server, ako namiesto toho nutit roznych klientov, aby robili keepalives z opacnej strany (openssh, putty – kazde to ma ine nastavenie)

    • WebSupport
      Odpovedať
      Autor
      WebSupport WebSupport

      Authorised_keys sú povolené, zrejme helpdesk ešte nemal túto informáciu. To nastavenie keepalives by sa dotklo všetkých klientov a niektorí z nich hlavne z bezpečnostných dôvodov môžu požadovať práve zmenu opačným smerom. Preto toto nastavenie nechávame na defaultnom stave.

      • eto
        Odpovedať
        Autor
        eto

        Rozumiem.

        Pre vsetkych, ktory maju zaujem aby ich spojenie nedropovalo, sa da openssh klient podobne nastavit v ~.ssh/config:
        ServerAliveInterval 20
        ServerAliveCountMax 3

        Pripominam, ze tieto „pingovacie“ null packety su posielane vo vnutri enkryptovaneho ssh streamu.

  • catman
    Odpovedať
    Autor
    catman

    Dovolim si spomenut este par mojich osvedcenych alternativ.
    Na mount FTP ako sietovy disk do Win pouzivam Webdrive, nie je free ale ani prehnane drahy. Na mount fs cez SSH do Win obdobne funkcna appka SFTP alebo plugin do Total Commanderu.
    Vo firme bezi virtualna Linux masina kde su mountnute vsetky vzdialene adresare a tento je pristupny cez smb, afp aj nfs, cize pre win, jablka aj linuxy.

    Na mount fs v Linuxe, pokial nemam protistranu pristupnu cez nfs alebo ssh, pouzivam curlftpfs – rovnako dobre funkcne pripojenie ftp fs do lokalneho.

  • Martin Adamko
    Odpovedať
    Autor
    Martin Adamko

    Ja len doplním postup pre darwinistov a hádam ma iní opravia/doplnia. Ak máte nejaký Mac tak asi viete, že OSX je tiež z unixovej rodinky.

    Package manager pre OSX, Homebrew, nainštalujte si ho podľa návodu na http://mxcl.github.com/homebrew/

    Inštalácia SSHFS: $ brew install sshfs

    Pozn.: Ak vám počas inštalácie vyskočí hlásenie, že než budete môcť používať to a to (ako mne `fuse4x`) tak si postupujte podľa inštrukcií, ktoré vám to dá. (Ja som napr. musel ísť podľa návodu po zadaní príkazu: $ brew info fuse4x-kext).

    Ostatok by už mal hádam frčať obdobne.

  • JollyKode – proaktívny projekt
    Odpovedať
    Autor
    JollyKode – proaktívny projekt

    Tiež sme prišli na čaro SSHFS v našom tíme. JollyKode (http://jollykode.com)

  • tomik
    Odpovedať
    Autor
    tomik

    SSHFS pre bezny hosting na websupport pomale, pre .git deployment nepouzitelne. Ked tak, jedine toto: https://github.com/git-ftp/git-ftp