Manuál: Aisa a SSH

Přihlášení

Na server sa pripájame programom ssh: ssh LOGIN@aisa.fi.muni.cz
a na fakultných strojoch stačí iba ssh aisa. Namiesto LOGIN napíšeme svoj fakultný login, obvykle je tvaru xčasť_priezviska alebo xUČO.

Fakultný login je možné zistiť napríklad v aplikácii Změna hesla pro systémy Fakulty informatiky, kde sa dá zároveň zmeniť fakultné heslo.

Po prihlásení vyzerá spustenie skriptu na odovzdanie úlohy nasledovne:
/home/kontr/odevzdavam pb071 hw0X {nanecisto/naostro}.

terminal ssh
Pred každým odovzdaním úlohy si nezabudneme skontrolovať, že bez chýb sa skompiluje aj na Aise. Pravdepodobne na vlastnom stroji používame inú verziu kompilátora s inými prepínačmi, prípadne pri vývoji na Windows nepoužívame linuxové nástroje vôbec. Ich chovanie totiž nebýva vždy rovnaké.

Moduly

Viaceré programy sa užívateľovi sprístupnia až na požiadanie. Slúži na to príkaz module:

module add MODULE_NAME

načíta jednorazovo modul; môžeme využiť Tab na doplňovanie názvov

module list

zobrazí aktuálne načítané moduly

Na Aise môžeme potrebovať moduly:

  • cmake-3.18.3 (k dispozícii je totiž stará verzia)

  • gcc-10.2 (tiež iba stará verzia)

  • vim-8.0 (pre našu konfiguráciu vimu)

  • llvm-17.0.1 pre clang-tidy/format

Na fakultných počítačoch:

  • pre IDE: qtsdk pre Qt Creator a clion pre CLion.

  • llvm-17.0.1 pre clang-tidy/format

Pri zadávaní mena modulu dvojnásobným Tab vyvoláme všetky možnosti, niekedy rôzne/novšie verzie.
U IDE si môžeme všimnúť aj verzie značené -local — tieto uprednostníme.

Automatické načítanie modulov

Možné pridaním príkazov do súboru .bashrc v domovskom adresári (~/.bashrc). Príkazy v .bashrc sa vykonávajú pri spustení programu bash, teda napríklad pri prihlásení. Pridanie modulov cmake-3.18.3 a llvm-17.0.1 spolu s kontrolou, že máme k dispozícii moduly, nastavíme pridaním nasledujúcich riadkov na koniec súboru .bashrc:

# pb071
if type -t module >/dev/null; then
    module add cmake-3.18.3
    module add llvm-17.0.1
    # add other modules here if needed
fi
Na editovanie súboru môžeme použiť napríklad vim.

(voliteľné) SSH kľúče a automatické prihlasovanie

Slúžia miesto hesla na identifikáciu užívateľa voči serveru. S ich použitím teda pri prihlasovaní na Aisu programom ssh nepotrebujeme zadať heslo a rovnako to platí pre všetky nástroje, ktoré ssh využívajú — ako je git, scp a iné.

SSH kľúče fungujú na princípe asymetrickej kryptografie a existujú vždy v pároch:
  • súkromný kľúč, ktorý patrí iba nám a musíme ho bezpečne chrániť,

  • verejný kľúč, ktorý zverejníme svetu

Správy šifrované verejným kľúčom dokáže dešifrovať iba odpovedajúci privátny kľúč. Pri posielaní teda správy šifrujeme verejným kľúčom prijímateľa, pretože vieme, že iba on ich bude vedieť prečítať — teda to nám pri prenose utají obsah správy.

V praxi funguje prihlasovanie na server zjednodušene tak, že server nám pošle správu zašifrovanú pomocou nášho verejného kľúča a svoju identitu mu dokážeme tým, že ju naším súkromným kľúčom budeme vedieť prečítať.

Vygenerovanie vlastných kľúčov

  1. Pár súkromný/verejný kľúč vygenerujeme nástrojom ssh-keygen:

    ssh-keygen -t ed25519 -C "xlogin@fi"

    Prepínačom -t zvolíme novší a bezpečnejší formát a -C je nepovinný komentár, ktorý pomenuje kľúč.

  2. Nástroj sa nás spýta na miesto uloženia kľúčov, ktoré iba Enter potvrdíme, aby sme sa vyhli dodatočným nastaveniam.

  3. Ďalej sa nás spýta na heslo. Je veľmi dôležité chrániť kľúč šifrovaním, no nie je to vyžadované a heslo sa dá vynechať dvojitým Enter.

  4. Vypíše nám umiestnenie oboch kľúčov: Your identification has been saved in /home/<xlogin>/.ssh/id_ed25519. Your public key…​, cestu k nim budeme neskôr potrebovať.

Nastavenie automatického prihlasovania

  1. Svoj verejný kľúč uložíme na Aisu, do ~/.ssh/authorized_keys, pomocou ssh-copy-id:

    ssh-copy-id xlogin@aisa.fi.muni.cz
  2. Aby sme pri práci s gitom nemuseli zadávať heslo, svoj verejný kľúč uložíme do služby, ktorá spravuje repozitáre. Mali by sme ho nájsť v súbore ~/.ssh/id_ed25519.pub, ktorý vypíšeme na terminál príkazom cat ~/.ssh/id_ed25519.pub. Po skopírovaní kľúč vložíme do fakultného GitLabu.

  3. Následne sa už môžeme prihlasovať na Aisu bez zadávania hesla. Kľúč ssh automaticky rozpozná (preto sme nemenili jeho cestu alebo názov):

    ssh xlogin@aisa.fi.muni.cz

Poznámky

Šifrovanie kľúčov a SSH agenti

Nešifrovaný súkromný kľúč je ako heslo prilepené na monitore — hocikto s prístupom k nemu ho môže zneužiť. Pokiaľ ale kľúč šifrujeme heslom, musíme ho pri každom jeho použití zadať znova, čím sa nám zjavne stratí najväčšia výhoda v ich používaní — automatické prihlasovanie.

ssh agent

SSH agent je program, ktorý si po dobu prihlásenia dešifrovaný kľúč zapamätá a poskytne ho za nás.

Zmena hesla na privátnom kľúči bez zmeny kľúču

ssh-keygen -o -f ~/.ssh/id_ed25519 -p

Skratky, používanie viacero kľúčov naraz

Konfiguráciu môžeme uviesť v súbore ~/.ssh/config. Nasledujúci príkaz nám umožní pripájať sa na Aisu pomocou kľúču id_ed25519 iba pomocou ssh aisa:

cat <<EOF >>~/.ssh/config
Host aisa
    Hostname aisa.fi.muni.cz
    User XLOGIN
    IdentitiesOnly yes
    IdentityFile ~/.ssh/id_ed25519
EOF

Zle nastavené prístupové práva, ssh odmietne kľúče použiť

Ssh nám pri zlých prístupových právach na relevantných súboroch (~/.ssh/) odmietne pripojenie. Práva pre kľúč id_ed25519 opravíme príkazom:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519