Jak z Windows pracovat na vzdáleném Linuxu

Při tvorbě webu se člověk čas od času dostane do situace, kdy potřebuje udělat něco na vzdáleném webovém serveru, kde běží Linux. Nikdo o tom nic nepíše, tak zkusím aspoň naznačovat. Na této stránce se dozvíte, že existuje Putty, CygWin aWinSCP.

Jakým protokolem - SSH přístup - SSH klient - Putty - Řádkový program SSH v Cygwinu - Kopírování z lokálního disku na vzdálený Linux přes SSH - Linux běžící na Windows

Jakým protokolem

Jsou v zásadě dva způsoby, jak se lze něco udělat na vzdáleném linuxovém počítači podle toho, jakým protokolem smím přistupovat:

Práce přes FTP je velice omezená a prakticky se tím dají pouze kopírovat soubory a nastavovat jim práva. V tomto textu se FTýPku nebudu věnovat. Řeknu pouze to, že potřebujete program z rodiny FTP klientů.

Přístup přes SSH je jiné kafe, protože přes SSH se dá plnohodnotně na vzdáleném serveru pracovat se vším všudy (podle toho, jaká mám práva). O tom, jak SSH použít, částečně pojednává tato stránka.

To, jestli můžu přistupovat přes FTP nebo přes SSH, určuje správce serveru. Standardní webhostingy podporují pouze FTP. Proto skoro nikdo neví, co si má počít, když získá SSH přístup.

SSH přístup

Na připojení potřebujete znát:

Adresa počítače může být jak IP adresa (jak lokální, tak veřejná, prostě nějaká dostupná), tak doménové jméno (opět -- může to být lokální jméno stroje, nebo veřejná doména, kterou si SSH přeloží pomocí DNS). Příkladem adresy může být:

Uživatelské jméno a heslo dostanu od admina.

Pasáž o portu přeskočte: SSH běží normálně na portu 22, ale pokud je admin dost paranoidní, 22 zavře a otevře SSH někde jinde. V tom případě se zadává port jako číslo za dvojtečku za adresu.

SSH klient

Jestliže jsem nějak dostal ssh přístup na vzdálený počítač (adresu, jméno, heslo), potřebuji na připojení program, který se jmenuje SSH klient. Existuje jich více, já používám ssh klienty dva:

Putty

Putty je nejzákladnější běžný ssh klient. Zlé jazyky říkají, že je i nejblbější, ale to je fuk. Programu Putty se familirárně říká Puttyna (rodu ženského). Putty se dá stáhnout a nainstalovat, samozřejmě zdarma. Pokud vám nefunguje tento odkaz na stažení Putty ze Slunečnice, zadejte prostě do vyhledávače "download Putty" a proklikejte si pár prvních odkazů.

Po spuštění se Putty zeptá, kam a jak se budeme připojovat. Vyplníte údaje o připojení, které si můžete uložit, a zvolíte Open (v české verzi Otevřít). Putty se pokusí připojit ke vzdálenému serveru.

Objeví se černé okno. Často v tuto chvíli nastane chyba, když je adresa buďto špatně, nebo není dostupná. Pak se musí adresa a připojení zkontrolovat, případně u admina serveru ověřit, zda na serveru běží ssh démon, případně na jakém portu.

Pokud Putty server najde (což je známkou toho, že je adresa správně), zeptá se, jestli se mu dá věřit. Teoreticky by se totiž nějaký stroj mohl za cíl pouze vydávat. SSH klient je paranoidní. Zvolte ano, důvěřovat.

V černém okně se objeví výzva k zadání jména a potom heslo. Jestliže se podaří na server dostat, jste nalogováni. Hurá, můžete normálně linuxácky pracovat v textovém režimu.

Jestliže je vám pojem "normálně linuxácky pracovat" poněkud cizí, nemohu s tím nic dělat. Nemám čas ani znalosti, abych psal helpku na Linux. Už tak tenhle text píšu dost diletantsky a určitě mi za něj někdo vynadá :-).

Chcete-li na vzdáleném serveru pracovat ve více oknech najednou, spustíte Puttyn víc. Putty se ukončuje tím, že se od serveru odpojíte, například příkazem exit nebo jiným standardním ukončením připojení. Také ji můžete zabít zavřením windowsovského okna, v takovém případě se ale trochu cuká a ptá se, jako jestli má opravdu skončit připojení, anžto se jí to asi nelíbí.

Existují i jiné programy, než je Putty. Jejich názvy jsem ale zapomněl. Můžete mi napsat, rád je sem připíšu.

Nevýhodou Putty je to, že 1) v ní neumím psát české znaky a že 2) neumí přistupovat na lokální disk.

Řádkový program SSH v Cygwinu

Teď budu zmiňovat dvě nové věci najednou. První věcí je Cygwin, druhou věcí bude řádkový program ssh.

Cygwin je emulátor Linuxu na Windows. Báječná věcička, mohu-li říci. Umožňuje provádět ve Windowsech spoustu kouzel, které umějí jenom linuxové utility. Jednou z linuxových utilit je příkaz ssh.

O Instalaci Cygwinu na Windows jsem napsal návod. Další podrobnosti prosím hledejte v něm, nechce se mi to sem psát znovu.

Jakmile máte nainstalovaný Cygwin, můžete si jej spustit. Tím se na lokálním počítači vlastně rozběhne Linux. V Linuxu existuje příkaz ssh, kterým se lze připojit na jiný server. Zápis příkazu je tento:

$ ssh adresa

Ten dolar na začátku řádku nic neznamená, ten se tam píše, aby bylo jasné, že to je příkazová řádka (už tam bude sám). Pokud se všechno povede (adresa bude sedět), zeptá se vzdálený stroj na jméno a heslo. Jestli bude sedět i to, jste přes lokální cygwin přihlášeni na vzdáleném Linuxu. Zápis přihlašování si můžete i urychlit:

$ ssh jmeno@adresa

Kde jmeno je vaše přihlašovací jméno. Pak se server ptá už jenom na heslo.

Při prvním přihlašování se ssh bude standardně ptát, zda věříte, že vzdálený server je ten, za který se vydává. Ano, věříte.

Nevýhodou Cygwinu je to, že taky neumí zapisovat české znaky. Navíc má jenom omezenou šířku řádku (Putty se dá libovolně roztahovat) a jeho rozhraní se asi nějak opírá o dosovské konzolové okno. Výhodou Cygwinu je, že umí přistupovat na lokální disk.

Kopírování z lokálního disku na vzdálený Linux přes ssh

Nejjednodušší je použít program WinScp. Kdy se tenhle program hodí:

Občas se vyskytnou případy, kdy na některý server (nebo z něj) potřebujete nakopírovat soubory na lokální disk nebo opačně. Nemáte ale FTP přístup, pouze SSH přístup. Co teď? Programem Putty se můžete na server připojit, ale Putty nevidí lokální disky -- jediné, co umí, je pracovat na vzdáleném stroji -- takže pomocí Putty nelze kopírovat.

Kopírování s WinScp

Program WinSCP vidí jak lokální disky, tak vzdálený server. Nedá se v něm dělat nic jiného než správa souborů přes SSH, ale zato to umí perfektně. Má dvě okna, podobá se klasickým commanderům (vzhled se dá navolit). Program WinScp je původem z Čech a je samozřejmě zdarma. WinScp můžete stáhnout na Winscp.net, nebo prostě zadejte do vyhledávače "winscp download".

Podobně jako všude při použití SSH, je třeba zadat všechny údaje a odsouhlasit, že věřím, že vzdálený server je ten, za který se vydává. Potom už se objeví okno souborů vzdáleného serveru a okno lokálního disku a může se vesele kopírovat.

Rozšifrování názvu WinScp: Win jako windows, to je jasné. Scp je Secure CoPy. Klasický příkaz cp (copy) není dostatečně bezpečný, a tak se pro kopírování mezi servery používá příkaz scp (s = secure = bezpečně). WinScp myslím příkaz scp interně používá, nebo jej emuluje.

WinScp je ta jednodušší varianta kopírování. Někdy je ale efektivnější kopírovat přes Cygwin, protože se nemusí tolik klikat.

Kopírování Cygwinem

Na Cygwinu je milé, že se chová skoro přesně jako Linux a že lokální windowsovské disky vidí pod adresou /cygdrive/písmeno, kde písmeno je třeba c pro disk C: nebo d pro disk D:. Takže například adresa /cygdrive/d/ je lokální déčko.

Když mám Cygwin puštěný a jsem v adresáři, odkud chci kopírovat soubory na vzdálený server (do adresáře se lze dostat příkazem cd), tak mohu napsat příkaz kopírování symbolicky takto:

$ scp soubor jmeno@adresa_serveru:/vzdaleny_adresar

konkrétně ten příkaz může vypadat třeba takto:

$ scp ukoly.html dusan@192.168.2.1:/data3/.

Na začátku je příkaz scp, tedy secure copy. Pak říkám, co chci kopírovat (v tomto případě soubor ukoly.htm) a pak říkám, kam. V tomto případě kopíruju na stroj s adresou 192.168.2.1 (asi nějaká šunka na lokální síti) pod uživatelským jménem dusan do adresáře /data3. Protože tento adresář začíná lomítkem, počítá se od rootu vzdáleného systému. Kdybych chtěl kopírovat do svého osobního adresáře, můžu začít jméno adresáře bez lomítka.

Poté, co tento příkaz zadám, vzdálený server se zeptá na heslo. Bude-li souhlasit, soubor se nakopíruje. Hned potom se ssh spojení zase uzavře, nikam mě to nepřihlásí.

Připadá vám to takhle složité? Ano, je to složité. Ale často je to velmi efektní a rychlé, pokud umíte rychle psát.

Druhým směrem se kopíruje podobně. Vždy ale musím být přihlášen v cygwinu na lokálním stroji, nikoli na vzdáleném.

$ scp jmeno@adresa_serveru:/vzdaleny_adresar/soubor .

kde tečka na konci znamená tento adresář (kdybych to chtěl jinam, tak tam napíšu, kam to chci). Konkrétně může příkaz vypadat:

$ scp dusan@192.168.2.1:/data3/ukoly.html .

Výklad: scp je opět příkaz na kopírování. dusan je moje uživatelské jméno, adresa je opět 192.168.2.1. Kopírovaný soubor se na serveru nalézá v adresáři /data3/ a nazývá se ukoly.html. Tečka na konci znamená, že se soubor bude kopírovat do aktuálního adresáře, ve kterém Cygwin na lokálním disku stojí. Po spuštění příkazu to chce heslo a spustí se kopírování.

Zpočátku se mi tahle kopírovací magie zdála šílená. Ale je krásná, protože má logiku. Dovolte mi závěrem poděkovat svým kolegům - učitelům Petru Vraníkovi a Eriku Brožkovi, že se mnou měli trpělivost, když jsem býval absolutní lama. Teď jsem lama jenom poloviční.

Linux běžící na Windows

Přibližně od roku 2019 je velmi dobrý nápad naisntalovat si na Windows virtuální Linux. Překvapivě to jde udělat z Microsoft Store, tedy oficiálního úložiště instalovatelných programů. V Microsoft Store stačí dát hledat patřičnou distribuci (já třeba takto instaluji Debian) a nechat stáhnout a nainstalovat. Je to tak trapně snadné, až mě to překvapilo.

K nově instalovanému systému nedostávám root účet ani heslo, ale nepotřebuju ho. Všechno jde udělat z nově vytvořeného uživatelského účtu a na co jsou potřeba větší práva (např. apt-get), dá se udělat přes sudo.

Normálně v takové instalaci pak smažim python, bashové utility i jednodušší software pro umělou inteligenci. Dá se stahovat z repozitářů, funguje apt-get install i make. Je to trochu pomalejší než opravdové železo, ale není to úplně poznat. Nezkoušel jsem přes to rozběhnout nic grafického, pracuju jenom s konzolí. Není problém takových konzolí rozběhnout víc najednou, normálně je spouštím z nabídky Start.

Windowsí disky jsou z takto instalovaného Debianu přístupné přes adresy /mnt/c apod, kde c je písmenko disku. (U jiných distrubucí než u Debianu předpokládám, že to je stejné, ale nezkoušel jsem to.) Takové automatické mountění windowsích disků často znamená, že vůbec nemusím nic nikam kopírovat. Klidně si soubor vytvořím třeba přes Windows a vzápětí ho použiju v Debianu.

 

Reklama

www.webhosting-c4.cz, extra rychlý SSD webhosting s doménou v ceně
o tvorbě, údržbě a zlepšování internetových stránek

Návody HTML CSS JavaScript Články Ostatní

Encyklopedie FrontPage Reklama PHP Server

Jak psát web píše Yuhů, Dušan Janovský. Kontakt.