Ebben a cikkben a legjobb trükkjeinket gyűjtöttük össze az SSH hatékonyabb használata érdekében. Megtanulhatja, hogyan:
- Második tényezőt adjon hozzá az SSH bejelentkezéshez
- Biztonságosan használja az ügynök továbbítást
- Kilépni a megakadt SSH sessionból
- Fenntartani a folyamatos terminál kapcsolatot
- Megosztani egy távoli terminál sessiont baráttal (Zoom nélkül!)
Második tényező hozzáadása az SSH-hoz
Öt különböző módon adhat hozzá második tényezőt az SSH kapcsolataihoz:
- Frissítse az OpenSSH-t, és használjon titkosító kulcsot. 2020 februárjában az OpenSSH támogatást kapott a FIDO U2F (Univerzális Második Tényező) titkosító kulcsokhoz. Ez egy nagyszerű új funkció, de van egy bökkenő: csak azok a kliensek és szerverek, amelyek frissítettek az OpenSSH 8.2 vagy annál újabb verziójára, tudják használni a titkosító kulcsokat, mivel a februári frissítés új kulcstípusokat vezet be számukra. A "ssh -V" parancsot
ellenőrizheti az SSH kliens verzióját, a szerver verzióját pedig a "nc [servername] 22" paranccsal.A februári verzióhoz két új kulcstípust adtak hozzá - ecdsa-sk és ed25519-sk (a megfelelő tanúsítványokkal együtt). A kulcsfile generálásához elegendő beilleszteni a titkosító kulcsát, és futtatni a parancsot:$ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk
Ez létrehozza a nyilvános és a titkos kulcsokat, és összekapcsolja azokat az U2F eszközével. A titkos kulcs feladata az U2F eszközön - a titkosító kulcs aktíválása mellett - a kulcs titkos leírásának dekódolása a lemezen.Ezen kívül másodlagos tényezőként kódolt frázist is adhat a kulcsaihoz.A kulcs-rezidens egy másik támogatott OpenSSH -sk- kulcs generálási típus. Ezekben az esetekben a leírás az U2F eszközön tárolódik, lehetővé téve, hogy rendelkezzen azzal a titkosító kulcs aktiválásakor. A rezidens kulcs létrehozásához futtassa a következő parancsot:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk
Ezután, hogy a leírást újra a memóriába hozza egy új eszközön, illessze be a titkosító kulcsot és futtassa a parancsot:
$ ssh-add -KA hosthoz való csatlakozás során továbbra is aktiválnia kell a titkosító kulcsot.
Használj PIV+PKCS11 és Yubikey-t. A korábbi SSHD verziókkal rendelkező eszközök csatlakoztatásához más megközelítés szükséges a titkosító kulcs használatához. A Yubicónál van egy útmutató az U2F+SSH PIV/PKCS11 használatához (angol). Ez nem ugyanaz, mint a FIDO U2F, és bár a módszer működik, nagy munkát igényel megérteni, hogy milyen varázslat irányítja.A hosthoz való csatlakozáskor még mindig aktiválnia kell a titkosítási kulcsot.
- Használja a PIV+PKCS11-t és a Yubikey-t. A régebbi SSHD verziókkal rendelkező eszközökhöz való csatlakozáshoz titkosítási kulcs használatával más megközelítést kell alkalmazni. A Yubicón található egy útmutató az U2F+SSH és a PIV/PKCS11 használatáról (angolul). Ez nem ugyanaz, mint a FIDO U2F, és bár a módszer működik, jelentős munkát igényel megtudni, hogy milyen varázslat mozgatja.
- Hozzon létre egyéni yubikey-agent ssh-ügynököt. Filippo Valsorda írta a Yubikeys-hez készült SSH ügynököt. Teljesen új, és minimum funkciót tartalmaz.
- Használja a Touch ID-t és a sekey-t. A Sekey egy nyílt forráskódú SSH ügynök, amely titkos kulcsokat tárol a Mac védett enclave-jában, és lehetővé teszi a Touch ID használatát a hozzáféréshez.
- Használjon Single Sign On SSH-t. Írtam egy útmutatót ennek a módszernek a beállításához (angolul). A single sign on SSH egyik előnye, hogy kihasználhatja a hitelesítési szolgáltatója biztonsági politikáit — beleértve a többlépcsős hitelesítést (MFA) is.
Az ügynök továbbításának biztonságos használata
Az SSH ügynök továbbítás lehetővé teszi a távoli gép számára, hogy hozzáférjen a helyi eszköz SSH ügynökéhez. Amikor SSH kapcsolatot létesít ügynök továbbítással (általában ssh -A segítségével), a kapcsolatban két csatorna lesz: az interaktív munkamenet és az ügynök továbbító csatorna. Ezen a csatornán a helyi SSH ügynök által létrehozott Unix socket kapcsolódik a távoli géphez. Ez kockázatos módszer, mivel a távoli eszközön gyökér hozzáféréssel rendelkező felhasználó hozzáférhet a helyi SSH ügynökéhez, és potencialisan az Ön nevében léphet fel a hálózaton. A standard Open SSH ügynök használatakor még csak észre sem veszi, hogy ez megtörtént. A U2F kulcs (vagy a Sekey) segíthet abban, hogy hatékonyan blokkolja a SSH ügynöke ellen tett külső próbálkozásokat.
Még ezzel az óvintézkedéssel is jó ötlet, ha a lehető legkevesebbszer használja az ügynök továbbítást. Ne használja azt minden munkamenetben — használjon ügynök továbbítást csak akkor, ha biztos benne, hogy szükséges az aktuális munkamenethez.
Kilépés a lefagyott munkamenetből
Hálózati megszakítás, programok kontrollálatlan viselkedése, vagy egy vezérlő sorozat, amely blokkolja a billentyűzet bemenetét — ezek mind lehetséges okai az SSH munkamenet megszakadásának.
A lefagyott munkamenetet többféleképpen is befejezheti:
- Automatikusan kilép a hálózati megszakításkor. A .ssh/config fájljába a következőt kell hozzáadnia:
ServerAliveInterval 5 ServerAliveCountMax 1Az ssh echo-t küld a távoli gépnek minden ServerAliveInterval másodpercben a kapcsolat ellenőrzéséhez. Ha a ServerAliveCountMax echo nem kap választ, az ssh időtúllépés miatt befejezi a kapcsolatot és kilép a munkamenetből.
- Kilépés a sessióból. Az SSH alapértelmezés szerint a ~ (tilde) karaktert vezérlőként használja. A ~. parancs lezárja a nyitott kapcsolatot, és visszatér a terminálhoz. (A vezérlő parancsokat csak új sorból lehet beírni.) A ~? parancs a rendelkezésre álló parancsok teljes listáját fogja megjeleníteni ebben a sesszióban. Ne feledje, hogy a ~ karaktert nemzetközi billentyűzeteknél lehet, hogy kétszer kell megnyomnia.
Miért fordulnak elő egyáltalán lefagyott sessziók? Az internet megjelenésének idején a számítógépek ritkán mozogtak. Amikor laptopokat használ, és több IPv4 WiFi hálózat között vált, az IP-címe megváltozik. Mivel az SSH a TCP kapcsolatokra épít, amelyek viszont egy stabil IP-címhez kötött végpontra támaszkodnak, minden alkalommal, amikor hálózatot vált, az SSH kapcsolatok elveszítik a socket-deszkriptort, és valójában elvesznek. Amikor az IP-címe megváltozik, a hálózati veremnek időre van szüksége, hogy észlelje a deszkriptor elvesztését. Amikor hálózati problémák lépnek fel, nem szeretnénk, ha a TCP kapcsolat egyik végpontja túl korán megszakítaná azt. Ezért a protokoll megpróbálja a data-t még néhány alkalommal újra elküldeni, mielőtt végleg feladná. Eközben a termináljában a sesszió lefagyott állapotúnak tűnik. Az IPv6 néhány mobilitással kapcsolatos funkciót ad hozzá, amelyek lehetővé teszik az eszköz számára, hogy megtartsa a hazai címét a hálózat váltása közben. Lehet, hogy egy napon ez már nem lesz olyan probléma.
Hogyan lehet állandó terminált nyitva tartani egy távoli csomóponton
Két különböző megközelítés létezik arra, hogyan lehet a kapcsolatot fenntartani a különböző hálózatok közötti váltáskor, vagy ha rövid ideig le szeretne lépni.
1. Használja a vagy
Ha valóban stabil kapcsolatra van szüksége, amely nem esik szét akkor sem, ha hálózatot vált, használja a Mosh mobil shellt. Ez egy biztonságos shell, amely először SSH-kézfogást használ, majd átvált a saját titkosított csatornájára az egész munkamenet során. Így a Mosh egy különálló, nagyon tartós és védett csatornát hoz létre, amely képes elviselni az internet megszakadását, a laptop IP-címének változását, valamint a súlyos hálózati kieséseket, és még sok mást, mindezt az UDP-kapcsolatok és a Mosh szinkronizáló protokolljának varázsának köszönhetően.
A Mosh használatához telepítenie kell mind a kliensre, mind a szerverre, és meg kell nyitnia a 60000-61000 portokat a kapcsolaton kívüli UDP forgalomhoz a távoli hosztjánál. A továbbiakban elegendő a következőt használni a kapcsolódáshoz: mosh user@server.
A Mosh a képernyők és billentyűleütések szintjén működik, ami számos előnyt biztosít a kliens és az SSH-szerver közötti standard bemeneti és kimeneti bináris adatfolyam átirányításával szemben. Ha csak a képernyőket és a billentyűleütéseket kell szinkronizálni, akkor sokkal könnyebb a megszakadt kapcsolatot később visszaállítani. Míg az SSH mindent pufferel és küld, ami történt, a Mosh-nak elegendő csak a billentyűleütéseket pufferelni és szinkronizálni az utolsó terminálablak képkockát a klienssel.
2. Használja a tmux-ot
Ha szeretné „jönni és menni, amikor csak kedve tartja”, és szeretné, hogy a távoli csatlakozás mindvégig fennmaradjon, használja a tmux. Szeretem a tmux-ot és folyamatosan használom. Ha az SSH-kapcsolata megszakad, elegendő csak újra csatlakozni és beírni: tmux attach. Ezen kívül olyan csodás funkciói vannak, mint a belső terminál fülkék és panelek, amelyek hasonlóak az iOS terminál füleihez, illetve megoszthatja a terminálját másokkal.
Néhányan szeretnék szebbé tenni a tmux-ot a Byobu-val, egy csomaggal, amely jelentősen javítja a tmux használhatóságát, és sok billentyűparancsot ad hozzá. A Byobu együtt jár az Ubuntával és könnyen telepíthető Mac-re a Homebrew segítségével.
Távkapcsolat osztása egy baráttal
Néha, amikor bonyolult problémákat hárítunk el a szervereken, felmerülhet a vágy, hogy megosszuk az SSH munkamenetet valakivel, aki nincs ugyanabban a szobában velünk. A tmux tökéletes erre a feladatra! Mindössze néhány lépést kell követni:
- Győződjön meg arról, hogy a tmux telepítve van a bástya node-ján, vagy bármelyik szerveren, amellyel dolgozni kíván.
- Mindkettőjüknek SSH-n kell csatlakoznia az eszközhöz, egy fiók használatával.
- Az egyiküknek el kell indítani a tmux-ot, hogy megkezdje a tmux munkamenetet.
- A másiknak el kell indítania a tmux attach parancsot.
- Tádá! Közös terminállal rendelkeznek.
Ha bonyolultabb többfelhasználós tmux munkameneteket szeretne, próbálja ki a tmate-t, ez a tmux fork, amely jelentősen megkönnyíti a közös terminálmunkameneteket.
Forrás: habr.com
