=====Vzdálený přístup===== Hlavním nástrojem pro vzdálený přístup do školy je v rámci předmětu APO protokol SSH (Secure Shell), který zajišťuje zabezpečený přístup ke vzdálené příkazové řádce, přenos souborů ale i možnost spuštění vzdálených grafických aplikací. Na UNIX-like systémech včetně GNU/Linux nebo Mac můžete využít stejnojmenného programu ''ssh''. Na OS Windows pak doporučujeme program [[https://www.ssh.com/ssh/putty/windows/|Putty]] Pomocí obou nástrojů je možné se připojit k serveru ''postel.felk.cvut.cz'', na kterém se nacházejí nástroje pro klasickou i křížovou kompilaci, je zde k dispozici simulátor [[courses:b35apo:documentation:qtmips:|QtMips]] a jsou zde také uložené zdrojové kódy k ukázkám napříč cvičeními. Pro přenos souborů lze pak použít protokol SCP případně jiné klienty podporující SCP/SFTP protokol. Pomocí programu ''ssh'' se k serveru připojíte s využitím vašeho ČVUT loginu a [[https://ist.cvut.cz/podpora/navody/faq-heslo/|ČVUT Hesla]] následujícím příkazem: ssh vas_login@postel.felk.cvut.cz V případě velké vytíženosti serveru nebo pokud plánujete spouštět **náročnější** úlohy, **nepoužívejte** přímo bránu pro vzdálený přístup (virtuální server ''postel''), ale spusťte si některý z počítačů v laboratoři. K napojení přístupu na počítač slouží na bráně konto ''student'' s generickým heslem ''xxx''. ssh student@postel.felk.cvut.cz Poté budete vyzváni k uvedení Vašeho uživatelského jména a výběru laboratoře, ze které Vám bude nabídnutý aktuálně nejméně vytížený stroj. Více na stránce [[https://support.dce.felk.cvut.cz/mediawiki/index.php?title=Vzd%C3%A1len%C3%BD_p%C5%99%C3%ADstup_do_laborato%C5%99%C3%AD |Vzdálený přístup do laboratoří]] [[https://support.dce.felk.cvut.cz/mediawiki/index.php/Hlavn%C3%AD_strana|IT Oddělení K13135]] ====SSH klíče==== Bezpečnější a rychleší volba než používání hesla je použití SSH klíče. Jeho veřejná část musí být k dispozici na cílovém serveru a spárována s vašim účtem. Soukromá část pak musí být držena v tajnosti a neměla by opustit Vás počítač/počítače. K přistupu na ''postel.felk.cvut.cz'' můžete využít svůj stávající klíč nebo si vygenerovat klíč nový. Obě součásti jednoho klíče si vygenerujete příkazem: ssh-keygen Vzhledem k tomu, že příkaz může defautně vygenerovat pouze 2048 bitové RSA, doporučuje autor tohoto článku použít moderní eliptickou křivku pomocí příkazu ssh-keygen -t ed25519 Nebo alespoň 4096 bit RSA pomocí: ssh-keygen -b 4096 Všechny varianty příkazu se Vás zeptají na 2 otázky: - kam klíč uložit - doporučujeme použít výchozí adresář (''~/.ssh/''). Pokud si generujete svůj první klíč, použijte celé výchozí jméno. - heslo k privatní části vašeho klíče. Privátní část totiž může být zašifrována i v rámci vašeho počítače. Pokud heslo nezadáte, klíč zůstane bez hesla. Pokud věříte, že je váš počítač bezpečné místo, heslo skutečně zadávat nemusíte. Pokud se heslo zadat rozhodnete, tak z důvodu bezpečnosti **nemusí být vidět počet znaků, které zadáváte**. Symbol ''~'' je zkratka pro Váš domácí adresář. Obě části klíče tedy máte ve vychozím nastavení uložené do složky ''.ssh'' ve svém domácím adresáři. Nyní můžete veřejnou část klíče přesunout na server a spárovat se svým účtem příkazem: ssh-copy-id vas_login@postel.felk.cvut.cz Nástroje okolo SSH hledají klíče standartně v adresáři ''~/.ssh/''. Pokud jste při tvorbě klíče zvolili jiný soubor v jiném adresáři, můžete ho definovat pomocí přepínače ''-i'': (je jedno, jestli veřejnou nebo privátní část - program vždy odešle tu správnou) ssh-copy-id -i cesta/k/souboru/s/klicem vas_login@postel.felk.cvut.cz Od této chvíle by mělo být (až na vyjímky zpusobené kontrolou, zda jste stále studentem) možné se na server přihlašovat bez ČVUT hesla, jen s pomocí SSH klíče. Pokud jste klíč z nějakého důvodu uložili na nestandartní místo, nestandartně pojmenovali nebo používáte jiný, speciální klíč, je nutné při připojení zadat plnou cestu ke klíč pomocí přepínače ''-i'': ssh -i cesta/k/souboru/s/klicem vas_login@postel.felk.cvut.cz ===SSH Agent=== Pokud jste si při tvorbě klíče zvolili heslo, musíte ho ve výchozím stavu zadat pokaždé když klíč použijete při připojení ke vzdálenému serveru. Pokud se k serveru připojujete často, může to být poněkud otravné. Abyste heslo nemuseli zadávat vždy, můžete si klíč v rámci svého počítače dočasně bezpečně nahrát do SSH agenta. Heslo tedy zadáte jen při nahrání klíče do agenta a pokaždé, kdy je pak potřeba, se použije již to dešifrované. Dešifrovaný klíč se z agenta odstraní při jeho ukončení, tedy například při vypnutí počítače. Klíče z výchozího adresáře ''~/.ssh/'' do agenta nahrajete příkazem: ssh-add Případně specifikujete cestu ke klíči: ssh-add cesta/k/souboru/s/klicem Příkazem ''ssh-add -l'' pak zjistíte, jaké klíče máte v agentovi momentálně nahrané. Pokud by výše zmíněné příkazy (''ssh-add''...) nefungovaly a hlásily chyby typu: Could not open a connection to your authentication agent je třeba agenta zapnout. Tohle se stává častěji při použití windows subsystem for Linux. Agenta zapnete pomocí: eval `ssh-agent -s` ===Další využití SSH klíče=== SSH klíč můžete kromě přístupu na server ''postel.felk.cvut.cz'' použít i například k přístupu ke školnímu GITu - viz. [[courses:b35apo:documentation:githowto:start#jak_pouzivat_git_s_ssh_klicem|návod jak přidat osobní SSH klíč ke školnímu GITu (do gitlabu)]]. Pokud máte svůj SSH klíč nahraný v SSH agentovi, můžete pak agenta "forwardovat" i při SSH spojení do školy (nebo jinam) pomocí přepínače ''-A'': ssh -A vas_login@postel.felk.cvut.cz Pokud jste svůj osobní SSH klíč přidali i ke školnímu GITu, můžete tak s forwardovaným agentem klonovat a jinak používat své školní GITové repozitáře i ze serveru ''postel''. SSH klíč je také možné použít pro přístup k deskám [[courses:b35apo:documentation:mz_apo:start|MZ_APO]], které jsou součástí semestrální práce zadané ve druhé půlce semestru. K přístupu k deskám však **nemůžete** použít svůj osobní SSH klíč (vygenerovaný pomoci ''ssh-keygen'') ale pouze SSH klíč uložený na serveru postel v souboru ''/opt/zynq/ssh-connect/mzapo-root-key''. Tento klíč je tedy na serveru ''postel'' také možné nahrát do SSH agenta: ssh-add /opt/zynq/ssh-connect/mzapo-root-key Klíč je možné do SSH agenta nahrát pouze pokud je aktivní, to znamená že jste například při připojování k serveru použili v příkazu ''SSH'' parametr ''-A''. Více informací o přístupu k deskám MZ_APO najdete v [[courses:b35apo:documentation:mz_apo-howto:start|Nápovědě k práci s přípravkem MicroZed APO]]. Klíč pro přístup k deskám si můžete zkopírovat i do svého počítače - např. nástrojem ''secure copy'' - ''scp'', který také využívá protokol ''SSH'': scp vas_login@postel.felk.cvut.cz:/opt/zynq/ssh-connect/mzapo-root-key . Autor tohoto článku například obvykle pracuje tak, že si po zapnutí svého počítače nahraje do SSH agenta své osobní klíče a například i klíč pro přístup k deskám MZ_APO. Agenta pak forwarduje i při připojení do školy. Nemusí tak řešit zadávání hesel při přístupech přes SSH do školy, ke školnímu GITu nebo při nahrávání programu do zmíněných desek. Více informací o tom, jak klíč pro přístup k deskám stáhnout a nastavit mu správná práva najdete [[courses:b35apo:documentation:mz_apo-howto:start#vzdaleny_pristup_do_laboratore|zde]]. ====Mapování lokálních adresářů na vzdálené adresáře==== Celé vaše uživatelské konto na serveru ''postel.felk.cvut.cz'' je možné si namapovat na lokální adresář ve vašem GNU/Linux systému přes utilitu [[http://man7.org/linux/man-pages/man1/sshfs.1.html|sshfs]]. Budete k tomu potřebovat pouze prázdný lokání adresář. Celé spojení je na bázi SSH, využijete k němu tedy ty stejné přihlašovací údaje nebo klíče jako v klasickém SSH spojení. Před prvním spojením je vhodné si připravit prázdnou složku například v domácím adresáři: mkdir remote_home Pak lokální složku napojíte na domácí složku na vzdáleném serveru: sshfs vas_login@postel.felk.cvut.cz: remote_home Odpojení konta se dá provést příkazem: fusermount -u remote_home ====Spouštění vzdálených grafických aplikací==== Grafické aplikace přímo na serveru ''postel.felk.cvut.cz'' pouštějte jen, pokud se jedná o nějakou **drobnost** - například pro vyzkoušení. Ze systémů podporujících standardizovaný protokol X-windows (nebo při použití jeho emulátoru) je možné vzdáleně spustit grafickou aplikaci tak, aby se její grafický výstup přesměroval na váš monitor. Při spuštěním SSH relace se o protunelování grafického protokolu požádá parametrem ''-X''(velké X) přidaným k příkazu ''ssh''. Následně můžete pomocí SSH pustit grafickou aplikaci na vzdáleném serveru (například simulátor QtMips) a okno se zobrazí u vás na monitoru. ssh -X vas_login@postel.felk.cvut.cz Spuštění simulátoru: qtmips_gui K provozu vzdálené grafické aplikace je třeba poměrně dobré internetové spojení se školním serverem. Spolehlivější variantou je tedy mít simulátor nainstalovaný u sebe na počítači. **Pro jakékoliv aplikace zatěžující vzdálený počítač je ale doporučený postup spuštění některého počítače ve studentských laboratořích** - viz. úvod této stránky. ====Alternativní možnosti spouštění vzdálených grafických aplikací==== Alternativní možnosti, které jsou šetrnější k šířce pásma dat pro relaci GUI a které je možné použít ze strany systémů, které obvyklé standardy nepodporují (Windows), jsou protokoly ''xpra'' a ''spice''. Pro jejich využití si vždy musíte pustit jeden z počítačů v laboratořích a nepoužívat bránu pro přístup (server ''postel.felk.cvut.cz''). K přístupu přes ''xpra'' nainstalujte balíček, pro Debian nebo Ubuntu to lze udělat apt install xpra Potřebujete verzi 3.0 a pozdější, která podporuje přihlašovací protokol SSH->SSH. Peo starší distribuce Debian nebo Ubuntu lze balíček získat z bacports echo "deb http://ftp.cz.debian.org/debian buster-backports main contrib non-free" | \ sudo cat >/etc/apt/sources.list.d/debian-backports.list sudo apt update sudo apt install -t buster-backports xpra Na laboratorním počítadle zkontrolujte, zda je již pro Váš účet spuštěné grafické sezení remote-desktop list Pokud ne, spusťe si grafické sezení remote-desktop start xpra Poznamenejte si číslo displeje a vložte jej do dialogového okna připojení Xpra. {{:courses:b35apo:documentation:remote:xpra-to-k23-2-connect.png?direct&400|}} K vašim datům na svých laboratorních účtech máte přístup prostřednictvím serveru ''postel''.