ssh config

Réthelyi Bálint

it's a me, Blint

  • Réthelyi Bálint vagyok
  • 4-ik éve KSZK-zom
  • voltam már:
    • reszortgazdaságis
    • SecurITeam gazdaságis
    • NETeam gazdaságis
  • jelenleg:
    • Sysadmin körvez
    • és még pár rendszernek a gazdája vagyok

eddig hogyan találkozhattunk vele

(a KSZKépzésen)

  • eddig egy gépre csak (shell-ként)

miket módosítottunk eddig

  • port-ot specifikáltuk
  • képződő felhasználóként léptünk be (nem a sajátunkkal)
ssh kepzodo@kepzodok.sch.bme.hu -p <privátban kapott szerencseszám>

milyen opciók vannak még?

A teljesség igénye nélkül pár:

  • jump: ssh -J <jump server> <remote server>
  • portforward(ok)
    • Local Forwarding:
      ssh -L <helyi port>:<távoli cím>:<távoli portja> <távoli gép>
    • Remote Forwarding:
      ssh -R <távoli port>:<helyi cím>:<helyi port> <távoli gép>
  • X11 Forward: ssh -X <távoli gép>

kulcs(ok) 🔑

egy kis kitekintés

csináljunk magunknak kulcsot - the easy way

csináljunk magunknak kulcsot - the other way

rakjunk össze egy életszagú megoldást

Szeretnénk elérni a kolin kívülről a salgó rack switch-ét:

rakjunk össze egy életszagú megoldást

Egyanez, csak egy sorral:

biztos van erre valami okos megoldás 🤔

  • ssh agent
  • ssh config

ssh config

(mostmár tényleg)

hogyan setupoljuk be?

  • ha még nem tettük volna, hozzunk létre egy .ssh mappát:
    mkdir -p ~/.ssh && chmod 700 ~/.ssh
  • indítsuk el az ssh-agentet: eval `ssh-agent`
  • készítsünk egy config nevű fájlt (ez lesz a konfigunk):
    touch ~/.ssh/config && chmod 600 ~/.ssh/config
  • valamint készítsünk egy socket mappát is:
    mkdir -p ~/.ssh/socket && chmod 600 ~/.ssh/socket

hogy néz ki egy ssh config fájl?

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Host *
    SSH_OPTION value

Na ez így egész kriptikus, nem?

hogy néz ki valójában egy ssh config fájl?

Host x-ray x-ray.sch.bme.hu
  User blint
  HostName x-ray.sch.bme.hu
  Port 10022
  ForwardAgent yes

Host *
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519
  ControlMaster auto
  ControlPersist yes
  ControlPath ~/.ssh/socket/%r@%h:%p
  Compression yes

Jobb esetben nem így 😅

kezd túl hosszú és bonyolult lenni a config fájlom 😱

  • készítsünk a .ssh mappában egy almappát amit be tudunk include-olni a konfigunkba:
    mkdir ~/.ssh/hosts
  • adjuk hozzá a konfigunkhoz a következő sort:
    Include ~/.ssh/hosts/*/*
  • és nézzük meg, hogy is nézhet ki egy ilyen összetettebb konfig

összetettebb konfig szerkezet

ezt mostmár csak menedzselni kéne a hostjaim közt 🤔

jöhetnek a funky dolgok

  • x-ray-en keresztül nyomtatás
  • noc-on keresztül hálósdb
  • saját shitek

Köszi a figyelmet!

Eddig a képzésen a saját vm-eket a fent említett módon lehetett elérni. Megfigyelhettük, hogy itt nem is a saját felhasználónkkal, hanem képződőként léptünk be.

Jump-nál egymás után fel lehet sorolni több jump servert is, vesszővel elválasztva. ssh -J <jump server1>,<jump server2>,<jump server3> <remote server> Portforwardok: Local Forward: távoli gép portját forwardolja a helyi gép portjára. Címfeloldást is a távoli gép végzi! pl: ssh -L 80:intra.example.com:80 gw.example.com Remote Forward: helyi gép portját forwardolja a távoli gép adott portjára. pl: ssh -R 8080:localhost:80 public.example.com -Y: trusted X11 forwarding -O: control commands (pl -O exit -> kinyírja a socketet) -v: verbose mode -q: quiet mode -l: login name -A: Agent forwarding -4: forces ssh to use IPv4 -6: forces ssh to use IPv6

data-loop="true"

Nézzük meg, ha csak lefuttatjuk (bárhol) az ssh-keygen-t, akkor kapunk egy rsa-s kulcsot, ha csak az Enter-t csapkodjuk, akkor kapunk hozzá egy default elnevezésű kulcs párt.

-C: comment -t: dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa -f: output file -b: bytes Azaz csináljunk funky dolgokat. Állítsuk át az algoritmust, adjunk hozzá kommentet, valamint specifikáljuk a létrejövő kulcsunk nevét és helyét. Ez alapján el tudunk készíteni még bármennyi kulcsot magunknak, bármilyen névvel és bármilyen lokációval.

ssh -J ssh://blint@x-ray.sch.bme.hu:10022,ssh://blint@noc-a.sch.bme.hu:10022 blint@sw-salgo Hiába a domain .sch.bme.hu-ra végződik noc-a-nál, kolin kívülről nem lehet elérni, tűzfal szabályok miatt!

Az ssh-agent egy program, ami biztonságos módon a memóriában tárolja felnyitva az ssh kulcsokat. Kényelmes, szinte nélkülözhetetlen az ssh config használatához. Az ssh config egy egyszerű fájl, amiben le tudjuk írni a korábban használt kapcsolókat, beállításokat, megkönnyítve a saját dolgunkat.

(ha éppen nem ssh configot csinálnánk, akkor mondjuk kézzel hozzá adhatnánk a kulcsainkat, de erre most nem lesz szükség) FONTOS! hogy a config fájlank 600 legyen a jogsultsága (írható és olvasható legyen a felhasználó által, mindenki más által meg ne lehessen elérni)

``` `` ` `` ```

Ha /*/*-ot írunk akkor a hosts-on belüli mappákon belüli fájlokat is behúzzuk 😉