8. SSH

SSH #

Osnova cvičení #

  • SSH
  • SCP
  • VS Code remoting
  • tmux

Příprava vlastního počítače #

Windows: Zkontrolujte, že máte v terminálu (mimo WSL) dostupný příkaz ssh (ssh -V). Pokud ne, je třeba SSH klienta nainstalovat, buď přes část “Optional features” v nastavení (“OpenSSH Client”) nebo tak, že otevřete PowerShell (pozor, ne cmd) a v něm spustíte následující příkaz:

Add-WindowsCapability -Online -Name "OpenSSH.Client~~~~0.0.1.0"

SSH #

  1. Připojte se k SSH serveru postel.felk.cvut.cz, pomocí ssh <username>@postel.felk.cvut.cz.

    • Pokud dostanete prompt The authenticity of host ... can't be established., potvrďte napsáním “yes”.
    • Následně zadejte ČVUT heslo.
  2. Vyzkoušejte si pohyb filesystemem a sdílení souborů. Zkuste např. v /tmp vytvořit soubor a sdělit jméno souboru kolegovi, který ho může přečíst.

  3. Zkuste se znovu připojit, již byste neměli dostat varování o neznámém serveru.

  4. Podívejte se do ~/.ssh/known_hosts, zkuste libovolně upravit řádek začínající postel.felk.cvut.cz a znovu se připojit. Následně řádek smažte.

  5. Lokálně (na vašem počítači, ne na serveru postel) si vygenerujte nový SSH klíč pomocí ssh-keygen -t ed25519, ponechte výchozí cestu.

    • Tento příkaz vytvoří 2 soubory ve složce ~/.ssh (na Windows C:\Users\<username>\.ssh), id_ed25519 a id_ed25519.pub. První ze souborů je váš soukromý klíč (ten byste neměli nikdy nikde sdílet), druhý (s příponou .pub) je veřejný klíč.
    • Pokud se teď zkusíte znovu připojit, nebude to fungovat, server váš klíč ješte nezná.
  6. Na serveru postel vytvořte složku ~/.ssh (pokud neexistuje), následně do souboru ~/.ssh/authorized_keys zkopírujte váš veřejný klíč ze souboru *.pub. Pokud neradi používáte terminálové textové editory, můžete klíč přidat treba pomocí příkazu echo "<vas verejny klic>" >> ~/.ssh/authorized_keys. Pro kontrolu, váš veřejný klíč by měl vypadat cca takto:

    ssh-ed25519 AAAAC3NzaC1lZ...RVwS+fm <username>@<machine-name>
    
  7. Nyní se zkuste připojit v novém okně terminálu, po zadání ssh <username>@postel.felk.cvut.cz už by po vás server neměl znovu chtít heslo.

    • Pro více informací o spojení a autorizaci se může hodit přepínač -v (lze opakovat pro více informací, -v, -vv, -vvv).
  8. Nyní si otevřete ~/.ssh/config (vytvořte pokud neexistuje), na Windows C:\Users\<username>\.ssh\config. Toto je konfigurační soubor vašeho SSH klienta.

  9. Zkuste si vytvořit alias pro server postel.felk.cvut.cz přidáním následujícího bloku:

    Host fel_postel
        HostName postel.felk.cvut.cz
        User <username>
    
  10. Nyní se zkuste připojit pomocí ssh fel_postel.

  11. Zkuste se skrz server postel pripojit na nekterý z počítačů v interní síti, např. stroj k23-remote s IP adresou 192.168.223.223: ssh kafkamat@192.168.223.223 -J fel_postel

  12. Vytvořte si alias fel_k23-remote, kterým se připojíte ke stroji k23-remote skrze server postel (direktiva ProxyJump):

    Host fel_k23-remote
        HostName 192.168.223.223
        User <username>
        ProxyJump fel_postel
    
  13. Zkuste se připojit na jeden z počítačů v učebně (požádejte některého ze spolužáků o IP adresu).

  14. Zkuste pomocí ssh přímo spustit příkaz na serveru: ssh fel_postel ls

SCP #

  1. Zkuste si pomocí scp nahrát libovolný soubor na server postel:

    scp ./lokalni_soubor fel_postel:./nahrany_soubor
    
  2. Zkuste si soubor stáhnout zpět na váš lokální počítač:

    scp fel_postel:./nahrany_soubor .
    
  3. Soubor ze serveru smažte (pomocí ssh):

    ssh fel_postel rm ./nahrany_soubor
    

VS Code remoting #

VS Code se umí pomocí SSH připojit na jiný počítač a automaticky synchronizuje všechny změny v souborech a spouští všechny nástroje vzdáleně. Následujte ukázku vyučujícího a připojte se na stroj fel_k23-remote pomocí VS Code.

tmux #

https://tmuxcheatsheet.com/

Základní příkazy:

  • Vytvoření nové instance: tmux, případně tmux new -s <nazev>
  • Připojení k existující session: tmux attach, případně tmux attach -t <nazev>
  • Automatické vytvoření (pokud neexistuje) a připojení: tmux new -A -s <nazev>

Základní klávesové zkratky:

  • Ctrl-b: přepnutí do ovládacího modu (podobně jako vim)
  • Ctrl-b d: odpojení od session
  • Ctrl-b c: vytvoření nového okna
  • Ctrl-b <0-9>: přepnutí na okno s daným číslem
  • Ctrl-b PgUp: page-up
  • Ctrl-b PgDn: page-down
  • Ctrl-b [ Ctrl-s: hledání (n/N pro předchozí/následující výsledek)
  • Ctrl-b :: zadávání tmux příkazů, např. set -g mouse on pro podporu scrollování myší