Ahoj uživateli. Chtěl jsem Ti jen sepsat návod jak na ssh a vše kolem toho. Zejména práce se soubory na vzdáleném serveru. Uvidíš, že to není o nic složitější, než práce lokální. Vlastně přibude jen specifikace uživatele a serveru.
Vygenerování klíčů
Klíče se vygenerují pomocí ssh-keygen
, v základním nastavení se vygeneruje soubor ~/.ssh/id_rsa
, což je soukromý klíč a soubor ~/.ssh/id_rsa.pub
, což je veřejný klíč. Při generování klíče můžeme zadat také heslo (passphrase).
Klíče na server umístí nejčastěji jeho administrátor. Potřebuje pouze obsah souboru ~/.ssh/id_rsa.pub
. Pokud je na serveru povolené přihlášení pomocí hesla, je možné si klíč nainstalovat sám, pomocí příkazu ssh-copy-id uzivatel@server
. Což je skript, který se přihlásí na vzdálený server vyzve uživatele k zadání hesla) a umístí veřejný klíč na správné místo.
Tím správným místem je soubor ~/.ssh/authorized_keys
, na serveru. Při ruční instalaci je třeba dbát na správné nastavení práv, soubor authorized_keys
musí mít oprávnění ne větší než 600 a adresář ~/.ssh
ne větší než 700 a vlastníkem musí být daný uživatel.
man ssh-keygen
man ssh-copy-id
Přihlášení na server
Když už je klíč na serveru, tak se lze přihlásit pomocí jednoduchého příkazu ssh uzivatel@server
, což by mělo projít automaticky.
SSH Agent
Pokud máme klíče opatřeny tajnou frází (což bych doporučoval), tak při každém jejich použití je nutné danou frázi zadávat znovu a znovu, což není příjemné. Proto vzniknul ssh agent, který umí načíst klíče do paměti (při počátečním načtení se zeptá na tajnou frázi ke klíči) a potom je automaticky poskytuje ssh klientům (ssh, scp, rsync, git…). Klíč agentovi předáme pomocí příkazu ssh-add cesta/ke/klíči
.
Práce se vzdálenými soubory
Na (nebo z) vzdáleného serveru lze kopírovat soubory pomocí příkazu scp
(secure copy). Například kopírování souboru /home/uzivatel/soubor
na server se udělá snadno pomocí příkazu scp /home/uzivatel/soubor uzivatel@server:/home/uzivatel/soubor
Jak je vidět, příkaz je zcela identický s příkazem cp
, až na určení serveru (to je to uzivatel@server:
— pozor na dvojtečku na konci, ta odděluje určení serveru od určení souboru) kam (nebo udkud) se má daný soubor nakopírovat.
Lze používat také relativní cesty, například uzivatel@server:soubor
je soubor přímo v home adresáři na daném serveru (lokálně bychom psali ~/soubor
).
Připojení vzdáleného adresáře
A teď to nejlepší. Když už je zařízený přístup na server (příkaz ssh uzivatel@server
projde bez komplikací) je možné libovolný vzdálený adresář na serveru připojit k sobě a pracovat s tím stejně jako s jakýmkoliv diskem (akorát je to teda pomalejší dle rychlosti sítě).
Je k tomu potřeba balíček sshfs
(aptitude install sshfs
) a na Debianu (a předpokládám i jinde) musí být uživatel členem skupiny fuse (členství se zařídí příkazem adduser uzivatel fuse
), jinak to píše chybu fuse: failed to open /dev/fuse: Permission denied. Potom je třeba se odhlásit a přihlásit, aby se členství ve skupině projevilo.
Teď už si uživatel může připojit vzdálený adresář pomocí sshfs uzivatel@server:/nejaky/adresar /kam/pripojit
(opět je zde stejná syntaxe s dvojtečkou). A je to. V lokálním adresáři (/kam/pripojit
, v praxi to bude spíše nějaký adresář v home uživatele) je připojený adresář, který je fyzicky umístěný na vzdáleném serveru a lze s ním pracovat stejně jako s lokálním.
Například, což používám já, připojení mého home adresáře na serveru floyd do lokálního adresáře pojmenovaného floyd:
sshfs tomas@floyd.iprint.sk: floyd
Odpojení vzdáleného adresáře
Stejně jako u ostatních systémů souborů je třeba daný adresář po práci řádně odpojit a to pomocí příkazu fusermount -u přípojný_bod
, takže pro předchozí příklad to bude fusermount -u floyd
.
A to je celé :-). Na Linuxu (na síti) je krásné to, že vlastně vůbec nezáleží na tom, kde daný server fyzicky je. Pomocí jednoho démona (sshd) lze vzdáleně pracovat na konzoli, kopírovat soubory mezi servery se stejnou lehkostí, jako by byly lokálně. A mnoho dalšího.