Provided by: manpages-hu_20010119-6_all
NÉV
ssh - biztonságos shell kliens (távoli gépre való belépésre szolgáló program)
ÁTTEKINTÉS
ssh [-l login_name] hostname [parancs] ssh [-a] [-c idea|blowfish|des|3des|arcfour|none] [-e escape_char] [-i identity_fájl] [-l login_name] [-n] [-k] [-V] [-o opciók] [-p port] [-q] [-P] [-t] [-v] [-x] [-C] [-g] [-L port:host:hostport] [-R port:host:hostport] hostname [parancs]
LEÍRÁS
Az ssh (Secure Shell) egy program, ami arra való, hogy távoli gépekre jelentkezzünk be és/vagy parancsokat hajtsunk végre távoli gépeken. Célja az, hogy helyettesítse az rlogin-t és az rsh-t, és biztonságos (titkosított) kapcsolatot biztosítson két gép között. X11 kapcsolatokat és tetszőleges TCP/IP portokat szintén lehet a biztonságos csatornára továbbítani (forwardolni). Az ssh kapcsolódik és belép a megadott hostname gépre. A felhasználó több módszerrel is igazolhatja azonosságát. Előszor is, ha az a gép, amelyről a felhasználó belép fel van sorolva az /etc/hosts.equiv -ban vagy az /etc/ssh/shosts.equiv -ban a távoli gépen, és a felhasználói nevek megegyeznek mindkét oldalon, akkor rögtön beengedik. Másodszor, ha a .rhosts vagy a .shosts fájl ott van a felhasználó home könyvtárában a távoli gépen és tartalmaz egy sort, amely a kliens gép nevét tartalmazza, a felhasználó beléphet. Az authentikációnak (authentication - hitelesítés, amikor bizonyítod, hogy az vagy, akinek mondod magad - a ford. megjegyzése) ezt a formáját általában nem engedélyezi a szerver, mert nem biztonságos. A második (és elsődleges) lehetőség az authentikációra az rhosts vagy hosts.equiv módszer, RSA-alapú gép-authentikációval kombinálva. Ez azt jelenti, hogy a belépés csak akkor engedélyezett, ha az .rhosts, .shosts, /etc/hosts.equiv, vagy /etc/ssh/shosts.equiv, megengedi, és ezen kívül a kliens gép kulcsát ellenőrizni lehet (lásd a $HOME/.ssh/known_hosts és /etc/ssh/ssh_known_hosts -t a FÁJLOK részben). Ez az authentikációs módszer kizárja az "IP spoofing", "DNS spoofing" és a "routing spoofing" által kihasznált biztonsági lyukakat. [Megjegyzés a rendszergazdáknak: az /etc/hosts.equiv, .rhosts, és a rlogin/rsh protokollok általában eredendően nem biztonságosak és le kell tiltani őket, ha a biztonság fontos szempont.] Harmadik authentikációs módszerként az ssh támogatja az RSA alapú authentikációt. Az elrendezés a nyilvános kulcsú kriptográfián alapul: vannak olyan titkosítási rendszerek, ahol a titkosítás és visszafejtés különböző kulcsok használatával történik, és a visszafejtéshez használt kulcsot nem lehet a titkosításhoz használt kulcsból kikövetkeztetni. Az RSA egy ilyen rendszer. Az elgondolás az, hogy minden felhasználó készít egy nyilvános/privát kulcspárt authentikációs célokra. A szerver tudja a nyilvános kulcsot, de a privát kulcsot csak a felhasználó ismeri. A $HOME/.ssh/authorized_keys fájl tartalmazza azokat a nyilvános kulcsokat, amelyekkel be lehet lépni. Amikor a felhasználó be akar lépni, az ssh program megmondja a szervernek, hogy melyik kulcspárt akarja authentikációra felhasználni. A szerver ellenőrzi, hogy a kulcs engedélyezve van-e, és ha igen, akkor úgy teszi próbára a felhasználót (pontosabban az általa futtatott ssh programot), hogy egy véletlen számot küld el neki, amit a felhasználó nyilvános kulcsával titkosít. Ezt csak a megfelelő privát kulcs segítségével lehet visszafejteni. Ezután a felhasználó kliense visszafejti a privát kulcsal, így bebizonyítja, hogy ismeri a a privát kulcsot anélkül, hogy azt elküldené a szervernek. Az ssh automatikusan alkalmazza az RSA authentikációs protokollt. A felhasználó az ssh- keygen(1) futattásával automatikusan létrehozza az ő RSA kulcspárját. Ezzel a privát kulcs a .ssh/identity -ba kerül, míg a nyilvános kulcs a .ssh/identity.pub -ba, a felhasználó home könyvtárában. A felhasználónak ezután a saját identity.pub -ját a .ssh/authorized_keys -ba kell másolnia a home könyvtárában a távoli gépen (az authorized_keys fájl megfelelt a hagyományos .rhosts fájlnak, és soronként egy kulcsot tartalmaz, bár a sorok nagyon hosszúak lehetnek). Ezután a felhasználó beléphet, anélkül hogy a jelszavát megadná. Az RSA authentikáció sokkal biztonságosabb mint az rhosts authentikáció. Az RSA authentikáció egy authentikációs közvetítő (agent) segítségével használható a legkényelmesebben. Lásd az ssh-agent(1) -et további információkért. Egy negyedik authentikációs módszerként, az ssh támogatja a TIS authentikációs szerveren keresztüli authentikációt. Az elképzelés az, hogy az ssh megkéri a TIS authsrv(8) -et, hogy authentikálja a felhasználót. Előfordulhat, hogy a felhasználói nevek a TIS adatbázisban nem ugyanazok mint a lokákis gépen, például ha a felhasználó egy smartcard -al vagy Digipass-al authentikálja magát. Ebben az esetben a felhasználói név az adatbázisban általában csak az authentikációs eszköz sorozatszámaként ismert. Az /etc/ssh/sshd_tis.map fájl tartalmazza a lokális felhasználók ás a neki megfelelő TIS adatbázis-beli nevek közötti leképezést. Ha ez a fájl nem létezik, vagy a felhasználó nincs benne, akkor az ssh feltételezi, hogy a felhasználói név és a TIS adatbázis-beli név ugyanaz. Ha a többi authentikációs módszer meghiúsul, az ssh jelszót kér a felhasználótól. A jelszót ellenőrzés céljából elküldi a távoli gépre, azonban mivel minden kommunikáció titkosítva van, a jelszót nem olvashatja el valaki, aki a hálózaton hallgatózik. Amikor a felhasználó azonosságát elfogadja a szerver, akkor vagy végrehajtja a megadott parancsot, vagy belép a gépbe, és a felhasználónak egy szokásos shell-t ad a távoli gépen. Minden, a távoli parancsal vagy shell-el történő kommunikáció automatikusan titkosítva lesz. Ha egy pszeudo-terminál volt allokálva (normális login session), a felhasználó kiléphet a "~." parancs segítségével és felfüggesztheti az ssh -t "~^Z" -vel. Az összes forwardolt kapcsolatot ki lehet listázni egy "~#" -el, és ha a session a forwardolt X11 vagy TCP/IP kapcsolatok végetérésére várva blokkol, akkor "~&" -el háttérbe lehet küldeni (Ezt nem szabad addig hasznélni, amíg a felhasználó shellje aktív, mert akkor a shell "lógni" fog). Az összes escape-szekvenciát "~?" -el lehet kilistázni. Egyetlen tilde (~) karaktert "~~" -ként lehet elküldeni (vagy úgy, hogy a tildét a fentiekben nem említett karakter követi). Az escape karakter csak akkor van különleges karakterként interpretálva, ha újsort követ. Az escape karaktert meg lehet változtatni a konfigurációs fájlokban vagy a parancssorban. Ha az ssh nem foglal le egy pszeudo terminált, akkor a session átlátszó lesz, és lehet bináris adatok megbízható átvitelére használni. A legtöbb rendszerben az escape karakter ``none'' -ra (semmire) való állítása a sessiont átlátszóvá teszi akkor is, ha egy tty van használatban. Egy session akkor ér véget, amikor a parancs végrehajtása vagy a shell a távoli gépen véget ér, és az összes X11 és TCP/IP kapcsolat lezárult. Az ssh a távoli program kilépési értékével (exit status) lép ki. Ha a felhasználó X11-et használ (a DISPLAY környezeti változó be van állítva), az X11 displayhez való kapcsolat automatikusan forwardolódik a távoli géphez, olymódon, hogy minden a shellből (vagy parancsból) indított X11 program a titkosított csatornán jön át, az igazi X szerverrel való kapcsolat pedig a lokális gépről jön létre. A felhasználónak nem kell kézzel beállítania a DISPLAY -t. Az X11 kapcsolatok forwardolásást a parancssoron vagy a konfigurációs fájlokban lehet beállítani. Az ssh által beállított DISPLAY a szerver gépre mutat, de zérónál nagyobb display számmal. Ez azért van, mert az ssh egy "proxy" X szervert állít fel a szerver gépen a kapcsolatok titkosított csatornán való továbbításához. Az ssh automatikusan beállítja a szerveren az Xauthority adatokat is. Ehhez egy véletlenszerű authorizációs cookie-t generál, amit a szerveren tárol az Xauthority-ban, ellenőrzi, hogy az összes forwardolt kapcsolat ezzel a cookie-val jön-e, és kicseréli őket az igazi cookie-ra, amikor a kapcsolat megnyílik. Az igazi authentikációs cookie-t soha nem küldi el a szerver gépre, és semmilyen cookie-t nem küld el titkosítás nélkül. Ha egy felhasználó egy authentikációs közvetítőt (agent) használ, akkor a közvetítőhöz való kapcsolatot automatikusan forwardolja a távoli gépre, hacsak ez nincs letiltva a parancssoron vagy egy konfigurációs fájlban. Tetszőleges TCP/IP kapcsolatoknak a biztonságos csatornán való forwardolását a parancssoron vagy egy konfigurációs fájlban lehet megadni. A TCP/IP forwardolásnak egy lehetséges alkalmazása egy elektronikus pénztárcához való biztonságos kapcsolódás; egy másik a tűzfalakon való átjutás. Az ssh automatikusan fenntart és ellenőriz egy adatbázist, amely tartalmazza az összes olyan gép RSA-alapú azonosítását, amellyel valaha is használva volt. Az adatbázis az .ssh/known_hosts -ban van, a felhasználó home könyvtárában. Ezen kívül az ismert gépeket az /etc/ssh/ssh_known_hosts -ban is leellenőrzi. Minden új gép automatikusan hozzáadódik a felhasználó fájljához. Ha egy gép nyilvános kulcsa megváltozik, az ssh figyelmeztet és megtiltja a jelszóval való belépést, nehogy a felhasználó jelszavát egy "trójai faló" lopja el. Ennek a mechanizmusnak egy másik célja a "középen a támadó" (man-in-the-middle attack) megakadályozása, amely egyébként meghiúsítaná a titkosítást. A StrictHostKeyChecking opciót (lásd az alábbiakban) lehet arra használni, hogy megakadályozzuk az olyan gépre való belépést, amelyeknek a kulcsa nem ismert vagy megváltozott.
OPCÍÓK
-a Megtiltja az authentikációs közvetítő (agent) forwardolását. Ezt egy gépektől függő módon a konfigurációs fájlban is meg lehet adni. -c idea|des|3des|blowfish|arcfour|none A session titkosításának a módját adja meg. Az idea az alapértelmezett. Biztonságosnak tartják. A des az adattitkosítási szabvány (data encryption standard), de feltörhető a kormányzatok, nagyobb vállalatok és a fontosabb bűnüldoző szervek által. A 3des (triple-des) egy titkosítás-visszafejtés-titkosítás három különboző kulcsal. Valószínűleg biztonságosabb mint a DES. Ez az alapértelmezett, ha valamelyik oldal nem támogatja az IDEA-t. A blowfish Bruce Schneier által kitalált titkosítási algoritmus, ami 128 bites kulcsokat használ. Az arcfour egy 1995-ben az Usenet News-ben publikált algoritmus. Úgy tartják, hogy ez ugyanaz mint az RSA Data Security által használt RC4 titkosítás (az RC4 az RSA Data Security bejegyzett védjegye). Ez a jelenleg támogatott leggyorsabb algoritmus. none esetén egyáltalán nincs titkosítás - ezt csak hibakeresésre szánták, és a kapcsolat nem biztonságos. -e ch|^ch|none Beállítja a pty-vel rendelkező session-ök számára az escape karaktert (alapértelmezett: ~). Ez csak a sor elején számít escape karakternek. A pont által követett escape karakter bezárja a kapcsolatot, a control-Z által követve felfüggeszti a kapcsolatot, és önmaga által követve egyszer küldi el az escape karaktert. A karakternek a ´none´ -ra való állítása letilt minden escape-t és teljesen átlászóvá teszi a session-t. -f A háttérbe teszi az ssh -t az authentikáció befejezése és a forwardolások létrehozása után. Ez hasznos ha az ssh jelszót vagy jelmondatot (passphrase) kér, de a felhasználó a háttérben akarja futtatni. Szkriptekben is hasznos lehet. Ez az opció a -n opciót is magában foglalja. A távoli gépeken levő X11 programok elindításának az ajánlott módja valami "ssh -f gép xterm" szerű. -i identity_fájl Megadja, hogy melyik fájlból legyen kiolvasva a privát kulcs az RSA authentikációhoz. Az alapértelmezett a .ssh/identity a felhasználó home könyvtárában. Identity fájlokat gépektől függő módon a konfigurációs fájlokban is meg lehet adni. Lehetséges több -i opciót is megadni (és a konfigurációs fájlokban is lehet több privát kulcs). -k Letiltja a kerberos ticket-ek forwardolását. Ezt szintén meg lehet adni gépektől függő módon a konfigurációs fájlokban is. -l login_name Meghatározza, hogy milyen felhasználói néven lépjen be a távoli gépre. Ezt szintén meg lehet adni gépektől függő módon a konfigurációs fájlokban is. -n A /dev/null -ból irányítja át a stdin-t (vagyis gyakorlatilag megakadályozza a stdin-ról való olvasást) Ezt használni kell, amikor az ssh a háttérben fut. Egy szokásos trükk ezt a távoli gépen levő X11 programok futtatására használni. Például "ssh -n shadows.cs.hut.fi emacs &" egy emacs-ot indít el a shadows.cs.hut.fi -n, és a X11 kapcsolat automatikusan forwardolódik a titkosított csatornán. Az ssh program a háttérbe kerül. (Ez nem működik, ha az ssh -nak jelszóra vagy jelmondatra van szüksége; erre lásd az -f opciót.) -o 'opciók' Ezt arra lehet használni, hogy a konfigurációs fájlok formátumában adjunk meg opciókat. Ez olyan opciók esetén hasznos, amelyeknek nincs külön parancssoron használható flag-jük. Az így megadott opcióknak ugyanaz a formátumuk mint egy konfigurációs fájl-beli sornak. -p port Megadja, hogy a távoli gép melyik portjára csatlakozzunk. Ezt szintén meg lehet adni gépektől függő módon a konfigurációs fájlokban is. -q Csendes (quiet) üzemmód. Ilyenkor a figyelmeztetések és a diagnosztikai üzenetek nem íródnak ki, csak a végzetes hibák. -P Nem privilégizált portot használ. Ilyenkor nem tudod az rhosts vagy a rsarhosts authentikációt használni, de át tud menni olyan tűzfalakon, amelyek nem engednek át privilégizált forrás-portról induló csomagokat. -t Kényszeríti a pseudo-tty lefoglalást. Ezt például távoli gépeken futó képernyő-alapú programok futtatására lehet használni (például amelyek menüket használnak). -v Bőbeszédő (verbose) üzemmód. Ilyenkor az ssh debugging üzeneteket ír ki a működéséről. Ez a kapcsolatfelépítéssel, authentikációval és a konfigurációval kapcsolatos problémák hibakeresésénél hasznos. -V Csak kiírja a verziószámot és kilép. -g Megengedi, hogy távoli gépek lokális port-forwardoló portokra kapcsolódjanak. Alapértelmezés szerint csak a localhostról lehet a lokálisan lekötött (bind) portokra csatlakozni. -x Letiltja az X11 forwardolást. Ezt szintén meg lehet adni gépektől függő módon a konfigurációs fájlokban is. -C Az összes adat (beleértve a stdin-t, stdout-ot, stderr-t és a forwardolt X11 és TCP/IP kapcsolatokat) tömörítve lesz. A tömörítési algoritmus ugyanaz mint a gzip által használt, és a "szintjét" a CompressionLevel opcióval (lásd alább) lehet beállítani. A tömörítés hasznos modemvonalakon és egyéb lassú kapcsolatok esetén, de a gyors hálózatok esetén csak lassítani fogja a dolgokat. Ezt szintén meg lehet adni gépektől függő módon a konfigurációs fájlokban is, lásd a Compress opciót alább. -L port:host:hostport Forwardol egy adott portot a lokális (kliens) gépről egy távoli gépre. Ez úgy működik, hogy lefoglal egy socket-et, hogy a port -on várakozzon (listen) a lokális oldalon, és valahányszor egy kapcsolat jön erre a portra, azt a biztonságos csatornán keresztül forwardolja, és a host:hostport -re a távoli gépről lép be. A port-forwardolást a konfigurációs fájlban is specifikálni lehet. Csak a root forwardolhat privilégizált portokat. -R port:host:hostport Forwardol egy adott portot a távoli (szerver) gépről egy lokális gépre. Ez úgy működik, hogy lefoglal egy socket-et, hogy a port -on várakozzon (listen) a távoli oldalon, és valahányszor egy kapcsolat jön erre a portra, azt a biztonságos csatornán keresztül forwardolja, és a host:hostport -re a lokális gépről lép be. A port-forwardolást a konfigurációs fájlban is specifikálni lehet. A távoli gépen rootként kell belépnünk, ha privilégizált portokat akarunk forwardolni.
KONFIGURÁCIÓS FÁJLOK
Az ssh a következő forrásokból veszi a konfigurácós adatait (ebben a sorrendben): parancssorbeli opciók, felhasználó konfigurációs fájlai ($HOME/.ssh/config), és a renszerszintű konfigurációs fájl (/etc/ssh/ssh_config). Minden paraméter az így kapott első értéket kapja. A konfigurációs fájlok "Host" specifikációk által behatárolt részeket tartalmaznak, és egy adott rész csak azokra a gépekre vonatkozik, amelyek illeszkednek a specifikációban megadott mintára. A parancssoron megadott gépnév kerül illesztésre. Mivel minden paraméter az első értéket kapja, az inkább egy adott gépre specifikus deklarációkat a fájl elején érdemes megadni, az általánosabb default-okat pedig a végén. A konfigurációs fájlnak a következő formátuma van: Az üres sorok és a ´#´ -el kezdődő sorok megjegyzések. Egyébként pedig egy sor formátuma "kulcsszó argumentumok" vagy "kulcsszó = argumentumok". A lehetséges kulcsszavakat és a jelentésüket lásd az alábbiakban (megjegyzés: a konfigurációs fájlokban különbség van a kisbetű és a nagybetű közott, de a kulcsszavaknál ez nem számít): Host Az ezt követő deklarációkat korlátozza, hogy csak a kulcsszó után következő mintára illeszkedő gépnevekre legyen érvényes (egészen a következő Host kulcsszóig). A ´*´ és a ´?´ wildcard-ként használható a mintákban. Ha a minta egyetlen ´*´ -ből áll, akkor az az összes gépre vonatkozó globális defaultot jelent. A gépnév ilyenkor a parancssoron megadott hostname argumentum (vagyis a név nincs kanonikus alakba hozva az illeszkedésvizsgálat előtt). BatchMode Ha ez "yes" -re van állítva, akkor a jelszó/jelmondat megkérdezése letiltódik. Ezt akkor hasznos, ha szkriptekből vagy egyéb automatizált eszközökből hívod, és nincs felhasználó, aki megadhatná a jelszót. Az argumentum "yes" vagy "no" kell legyen. Cipher Meghatározza a session titkosításához használat módszert. Jelenleg az idea, des, 3des, blowfish, arcfour és none vannal támogatva. A alapértelmezett az "idea" (vagy a "3des" ha az "idea"-t nem támogatja mindkét gép). A "none" esetén nincs titkosítás - ezt csak hibakeresésre szabad használni, mert ilyenkor a kapcsolat nem biztonságos. ClearAllForwardings Kitörli az összes forwardolást, miután beolvasta az összes konfigurációs fájlt, és a parancssort is. Ez arra jó, hogy a konfigurációs fájlokban található forwardolásokat letiltsd, amikor egy második kapcsolatot akarsz létrehozni egy olyan géppel, amelynek a konfigurációs fájlában a forwardolás be van állítva. Az scp ezt alapértelmezés szerint beállítja, így működni fog még akkor is, ha a konfigurációs fájban forwardolások vannak beállítva. Compression Meghatározza hogy legyen-e tömörítés használva. Az argumentum "yes" vagy "no" kell legyen. CompressionLevel Meghatározza a tömörítés szintjét, ha a tömörítés engedélyezve van. Az argumentum egy 1 (gyors) és 9 (lassú, de a legjobb) közötti szám kell legyen. Az alapértelmezett szint 6, ami jó a legtöbb alkalmazás szempotjából. Ezeknek az értékeknek a jelentése ugyanaz, mint a GNU GZIP esetén. ConnectionAttempts Meghatározza, hogy hányszor próbálkozzon (másodpercenként egyszer), mielőtt az rsh- val próbálkozna, vagy kilépne. Az argumentum egy egész szám kell legyen. Ez hasznos lehet szkriptekben, ha a kapcsolatfelvétel néha nem sikerül. EscapeChar Beállítja az escape karaktert (az alapértelmezett: ~). Az escape karaktert a parancssoron is be lehet állítani. Az argumentum egy betű által követett ´^´ kell legyen, vagy ``none'', hogy az escape karaktert teljesen letiltsuk (és így a kapcsolatot átlátszóvá tegyük a bináris adatok számára) FallBackToRsh Meghatározza, hogy ha az ssh kapcsolat nem sikerül "connection refused" hiba miatt (amit valószínüleg az okoz, hogy a másik gépen nem fut az sshd ), akkor az rsh legyen-e használva automatikusan helyette (egy megfelelő figyelmeztetés után, mely szerint a session nem lesz titkosítva). Az argumentum "yes" vagy "no" kell legyen. ForwardAgent Meghatározza, hogy egy authentikációs közvetítővel való kapcsolat (ha van) forwardolva legyen-e a távoli gépre. Az argumentum "yes" vagy "no" kell legyen. ForwardX11 Meghatározza , hogy az X11 kapcsolatok automatikusan át legyenek-e irányítva a biztonságos csatornára a DISPLAY beállításával egyidejűleg. Az argumentum "yes" vagy "no" kell legyen. GatewayPorts Meghatározza, hogy távoli gépek kapcsolódhatnak-e a lokálisan forwardolt portokra. Az argumentum "yes" vagy "no" kell legyen. GlobalKnownHostsFile Meghatározza, hogy a /etc/ssh/ssh_known_hosts helyett melyik fájl legyen használva. HostName Meghatátozza annak a gépnek az igazi nevét, amelyikre be akarunk lépni. Ez arra jó, hogy rövidített neveket használjunk. A default a parancssoron megadott név. A numerikus IP címek szintén engedélyezve vannak (a parancssoron is, és a HostName specifikációkban is). IdentityFile Meghatározza, hogy a felhasználó RSA authentikációs kulcsa melyik fájlból legyen kiolvasva (az alapértelmezett az .ssh/identity a felhasználó home könyvtárában). Ezenkívül egy esetleges authentikációs közvetítő által megadott identitások is felhasználódnak. A fájl neve tertalmazhatja a tildét, hogy a felhasználó home könyvtárát jelezze. Több identitás-fájlt is meg lehet adni a konfigurációs fájlokban, ilyenkor ezek az adott sorrendben lesznek kipróbálva. KeepAlive Meghatározza, hogy a rendszer küldjön-e "maradj élve" (keepalive) üzeneteket a túloldalnak. Ha küld, akkor a kapcsolat megszünése, vagy a gépek egyikének a meghalása megfelelően észlelődik. Ugyanakkor ez azt is jelenti, hogy a kapcsolatok megszakadnak akkor is ha a hálózat csak ideiglenesen nem működik, és van aki ezt idegesítőnek tartja. A alapértelmezett az hogy "yes" (küldjön ilyeneket), és a kliens észre fogja venni ha a szerver vagy a hálózat lehal. Ez fontos a scriptekben, és sok felhasználó szintén szereti. A keepalives-ek letiltásához ezt az értéket "no"-ra kell állítani mind a szerver, mind a kliens konfigurációs fájljaiban. KerberosAuthentication Meghatározza, hogy legyen-e Kerberos V5 authentikáció használva. KerberosTgtPassing Meghatározza, hogy legyen-e egy Kerberos V5 TGT a szervernek elküldve. LocalForward Azt állítja be, hogy egy lokális TCP/IP port forwardolva legyen a biztonságos csatornán keresztül a megadott gép megadott portjára. Az első argumentum egy portszám kell legyen, a második meg egy gép:port. Egyszerre több forwardolást is be lehet állítani, és további forwardolásokat lehet a parancssoron hozzáadni. Privilégizált portokat csak a root forwadolhat. NumberOfPasswordPrompts Meghatározza, hogy az ssh hányszor kérje el a jelszót mielőtt feladná. Mivel a szerver szintén limitálja a próbálkozások számát (jelenleg 5 a maximum), ezért hatástalan ennél nagyobb értékre állítani. Az alapértelmezett érték egy. PasswordAuthentication Meghatározza legyen-e jelszó-authentikáció használva. Az argumentum "yes" vagy "no" kell legyen. PasswordPromptHost Meghatározza, hogy benne legyen-e a távoli gép neve a jelszó promptban. Az argumentum "yes" vagy "no" kell legyen. PasswordPromptLogin Meghatározza, hogy benne legyen-e a távoli login név a jelszó promptban. Az argumentum "yes" vagy "no" kell legyen. Port Meghatározza, hogy a távoli gépen milyen porton probálkozzon. A default 22. ProxyCommand Meghatározza, hogy milyen parancs segítségével kapcsolódjunk egy szerverre. A parancs-string a sor végéig tart, a /bin/sh hajtja végre. A parancs-stringben a %h helyére a szerver gép neve kerül, %p helyére pedig a portszám. A parancs szinte bármi lehet, a stdin-ről kell olvasnia, és a stdout-re írnia. Végül egy valamilyen gépen futó sshd szerverre kell kapcsolódnia, vagy "sshd -i" -t kell futtatnia valahol. A gép-kulcs kezelése a szerver gép HostName-ja segítségével (aminak a defaultja a felhasználó által beírt név) történik. (Megjegyzés: az ssh -t lehet úgy konfigurálni, hogy a SOCKS rendszert támogassa: ehhez fordításkor a --with- socks4 vagy --with-socks5 opciókat kell megadni). RemoteForward Azt állítja be, hogy egy távoli TCP/IP port forwardolva legyen a biztonságos csatornán keresztül a megadott lokális gép megadott portjára. Az első argumentum egy portszám kell legyen, a második meg egy gép:port. Egyszerre több forwardolást is be lehet állítani, és további forwardolásokat lehet a parancssoron hozzáadni. Privilégizált portokat csak a root forwadolhat. RhostsAuthentication Meghatározza, hogy az rhosts authentikáció ki legyen-e próbálva. Megjegyzés: ez a deklaráció csak a kliens viselkedését befolyásolja, és a biztonságra semmi hatása nincs. Az rhosts authentikációval való próbálkozás letiltása csökkentheti az authentikációs időt lassú kapcsolatok esetén, ha az rhosts authentikáció nincs használatban. A legtöbb szerver nem engedélyezi az az rhosts authentikációt, mert az nem biztonságos (lásd RhostsRSAAuthentication) Az argumentum "yes" vagy "no" kell legyen. RhostsRSAAuthentication Meghatározza, hogy az RSA gép-authentikációval kombinált rhosts authentikáció ki legyen-e próbálva. Ez az elsődleges authentikációs módszer a legtöbb esetben. Az argumentum "yes" vagy "no" kell legyen. RSAAuthentication Meghatározza, hogy az RSA authentikáció ki legyen-e próbálva. Az argumentum "yes" vagy "no" kell legyen. Az RSA authentikáció csak akkor lesz megpróbálva, ha egy identity fájl létezik, vagy ha egy authentikációs közvetítő fut. StrictHostKeyChecking Ha ez a flag "yes" - re van állítva, akkor az ssh soha nem fogja a gép-kulcsokat a $HOME/.ssh/known_hosts fájlhoz automatikusan hozzáadni, és megtagadja, hogy olyan gépekre lépjen be, amelyeknek a kulcsa megváltozott. Ez maximális védelmet nyújt a trójai faló típusú támadások ellen. Ugyanakkor eléggé idegesítő tud lenni, ha nincs egy jó /etc/ssh/ssh_known_hosts fájlod installálva és gyakran próbálsz új gépekre kapcsolódni. Gyakorlatilag ez az opció arra kényszeríti a felhasználót, hogy kézzel adja hozzá az összes új gépet. Általában "ask"-ra állítják ezt az opciót, és az új gépek automatikusan hozzáadódnak az ismert gépeket tartalmazó fájlhoz, miután a felhasználó megerősítette, hogy valóban ezt akarja. Ha ez "no"-ra van állítva, akkor az új gépek automatikusan adódnak hozzá az ismert gépeket tartalmazó fájlhoz. Az ismert gépek kulcsai minden esetben automatikusan ellenőrizve lesznek. Az argumentum "yes", "no" vagy "ask" kell legyen. TISAuthentication Meghatározza, hogy megpróbálkozzunk-e TIS authentikációval. Az argumentum "yes" vagy "no" kell legyen. UsePrivilegedPort Meghatározza, hogy használjunk-e privilégizált portokat, amikor a másik oldalhoz hozzákapcsolódunk. Az alapértelmezett az, hogy "yes", ha az rhosts authentikációk engedélyezve vannak. User Meghatározza, hogy milyen felhasználóként lépjen be. Ez akkor lehet hasznos, ha a különböző gépeken más-más a felhasználói neved, és nem akarod azzal veszíteni az időt, hogy a parancssoron adod meg a felhasználói nevet. UserKnownHostsFile Meghatározza, hogy a $HOME/.ssh/known_hosts helyett milyen fájlt használjunk. UseRsh Meghatározza, hogy egy adott gépre rögtön az rlogin/rsh legyen-e használva. Előfordulhat, hogy egy gép egyáltalán nem támogatja az ssh protokollt. Ilyenkor ssh rögtön elindítja az rsh -t. Az összes többi opció (kivéve a HostName-t) ignorálva lesz. Az argumentum "yes" vagy "no" kell legyen. XAuthLocation Meghatározza a elérési utat a xauth programhoz.
KÖRNYEZET
Az ssh normális esetben a következő környezeti változókat állítja be: DISPLAY A DISPLAY változó az X11 szerver helyére utal. Ezt az ssh automatikusan egy "gépnév:n" alakra állítja be, ahol a gépnév annak a gépnek a neve, ahol a shell fut, és n egy >= 1 egész szám. Az ssh ezt arra használja, hogy az X11 kapcsolatokat a biztonságos csatornán forwadolja. Jobb, ha a felhasználó nem állítja be maga a DISPLAY-t expliciten, mert ez azt eredményezi, hogy az X11 kapcsolat nem lesz biztonságos. (és a felhasználó kénytelen lesz magának bemásolni a szükséges authorizációs cookie-kat). HOME A felhasználó home könyvtára. LOGNAME Az USER szinonimája - az olyan rendszerekkel való kompatibilitás céljából, amelyek ezt a változót használják. MAIL A felhasználó mailbox-a. PATH Egy olyan alapértelmezett PATH-ra van beállítva, amelyet fordítás közben lehet megadni az ssh -nak, vagy egyes rendszerekben az /etc/environment -ban vagy az /etc/default/login -ban. SSH_AUTH_SOCK Ha létezik, arra van használva, hogy egy olyan unix-domain sockethez vezető path-ot jelezzen, ami egy authentikációs közvetítővel (avgy lokális megfelelőjével) való kapcsolathoz kell. SSH_CLIENT A kapcsolat kliens részét jelzi. Ez a változó három space-el határolt értéket tartalmaz: kliens ip-cím, kliens portszám és szerver portszám. SSH_ORIGINAL_COMMAND Ez az eredeti parancssor kényszerített parancsfuttatás esetén. Arra lehet használni, hogy elérd az argumentumokat stb. a túloldalról. SSH_TTY Ez a jelenlegi shellel vagy parancsal társított tty nevére (egy eszközhöz vezető útvonalra) van állítva. Ha a jelenlegi session-nak nincs tty-je, ez a változó nincs beálítva. TZ Az időzóna (timezone) változó a jelenlegi időzónát jelzi, ha az be volt állítva a démon indításakor. (A démon átadja ezt az értéket az új kapcsolatoknak.) USER A belépett felhasználó neve. Ezeken kívül az ssh elolvassa az /etc/environment és $HOME/.ssh/environment, fájlokat, és VÁLTOZÓNÉV=érték formátumú sorokat ad a környezethez. Egyes rendszereken további mechanizmusok is létezhetnek a környezet beállítására, így például az /etc/default/login Solaris-on.
FÁJLOK
$HOME/.ssh/known_hosts Olyan gépek kulcsai, amelyikbe a felhasználó belépett (és nincsenek benne a /etc/ssh/ssh_known_hosts -ban). Lásd még az sshd kézikönyvlapot. $HOME/.ssh/random_seed A véletlenszám-generátor inicializálásához használt fájl. Ez a fájl fontos adatokat tartalmaz, a felhasználónak legyen írási/olvasási joga rá, de másoknak semmi. Ez a fájl akkor keletkezik, amikor egy program első ízben fut, és automatikusan változik. A felhasználónak sohasem kell elolvasnia vagy módódítania ezt a fájlt. $HOME/.ssh/identity A felhasználó RSA authentikációs identitását tartalmazza. Ez a fájl fontos adatokat tartalmaz, a felhasználónak legyen írási/olvasási joga rá, de másoknak semmi. Ennek a kulcsnak a generálásákor egy jelmondatot is meg lehet adni, ez a jelmondat arra használható, hogy ennek a fájlnak az érzékeny részét titkosítsa az IDEA segítségével $HOME/.ssh/identity.pub Az authentikációra használt nyilvános kulcsot tartalmazza (az identitás-fájl nyilvános részét olvasható formában) ennek a fájlnak a tartalmát a $HOME/.ssh/authorized_keys fájlhoz kell hozzáadni minden olyan gépen, amelyikre RSA authentikáció segítségével akarsz belépni. Ez a fájl nem érzékeny, és lehet (de nem szükségszerű) mindenki által olvashatóvá tenni. Ezt a fájlt soha nem használják automatikusan, és nincs is szükség rá, csak a felhasználó kényelme kedvéért van ott. $HOME/.ssh/config Ez a konfigurációs fájl a felhasználóra jellemző beállításokat tartalmazza. A fájl formátuma a fentiekben van leírva. Ezt a fájlt az ssh kliensek használják. Általában ez a fájl nem tartalmaz érzékeny információkat, de az ajánlott jogosultságok írás/olvasás a felhasználónak, és semmi jog másoknak. $HOME/.ssh/authorized_keys Azokat az RSA kulcsokat tartalmazza, amelyek használhatók arra, hogy segítségével e felhasználóként be lehessen lépni. Ennek a fájlnak a formátuma az sshd kézikönyvlapban van leírva. Legegyszerűbb esetben a formátum ugyanaz mint a .pub identitás fájlok esetén. Ez a fájl nem tartalmaz nagyon érzékeny információkat, de az ajánlott jogosultságok írás/olvasás a felhasználónak, és semmi jog másoknak. /etc/ssh/ssh_known_hosts Az ismert gépek kulcsainak rendszerszintű listája. Ezt a fájlt a rendszergazdának kell elkészítenie, hogy a hálózaton belüli összes gép nyilvános kulcsát tartalmazza. Ennek a fájlnak mindenki által olvashatónak kell lennie. Ha egy gépnek több neve is van, akkor az összes ilyen gépnevet fel kell sorolni, vesszővel elválasztva. A formátumot az sshd kézikönyvlap írja le. Belépéskor a kanonikus gépnév (amit a nameserver visszaad) az, amit az sshd a kliens gép identitásának a megállapítására használ belépéskor; a többi névre azért van szükség, mert az ssh nem konvertálja a felhasználó által megadott nevet kanonikus névvé, mielőtt egy kulcsot ellenőrizne, mivel egyébként valaki, aki hozzáfér a nameserver-hez, átverhetné a gép-authentikációt. /etc/ssh/ssh_config A rendszerszintű konfigurációs fájl. Ez a fájl defaultokat specifikál olyan értékek számára, amelyek nincsenek a felhasználó konfigurációs fájljában, vagy olyan felhasználóknak, akiknek nincs konfigurációs fájljuk. Ennek a fájlnak mindenki által olvashatónak kell lennie. $HOME/.rhosts Ez a fájl az .rhosts authentikáció során van használva, mégpedig arra, hogy felsorolja azokat a gép/felhasználó párokat, amelyeknek a belépés engedélyezve van. (Megjegyzés: ezt a fájlt használja az rlogin és az rsh is, ezért használatuk nem számít biztonságosnak) A fájl minden sora tartalmaz egy gépnevet (abban a kanonikus formában, ahogy a nameserverek adják), utána pedig egy azon a gépen található felhasználó felhasználói nevét, vesszővel elválasztva. Ennek a fájlnak a felhasználó tulajdonában kell lennie, és nem szabad másoknak is írási jogot adni rá. Megjegyzés: alapértelmezés szerint az sshd sikeres RSA gép-authentikációt igényel mielőtt megengedné az .rhosts authentikációt. Ha egy szerver géped nem tartalmazza egy kliens gép kulcsát az /etc/ssh/ssh_known_hosts -ben, akkor az $HOME/.ssh/known_hosts -be is teheted. A legegyszerűbb módja ennek az, hogy a szerverről belépsz a kliensre, ekkor a kliens gép kulcsa automatikusan hozzáadódik a $HOME/.ssh/known_hosts -hoz. $HOME/.shosts Ezt a fájlt pontosan ugyanúgy kell használni mint a .rhosts -t. Csak azért van, hogy képes legyél az rhosts authentikációt használni az ssh -val, anélkül, hogy megenged az rlogin-t vagy az rsh-t. /etc/hosts.equiv Ez a fájl az .rhosts authentikáció során van használva. Kanonikus gépneveket tartalmaz, soronként egyet (a formátum teljes leírását lásd az sshd kézikönyvlapban). Ha egy kliens gép benne van ebben a fájlban, és a login nevek a szerveren és a kliensen megegyeznek, akkor a belépés automatikusan engedélyezve lesz. Ezen kívül sikeres RSA gép-authentikációra is szükség van normális esetben. Ennek a fájlnak csak a root által kell írhatónak lennie. /etc/ssh/shosts.equiv Ez a fájl pontosan úgy van feldolgozva, mint a /etc/hosts.equiv. Arra jó, hogy megengedje az ssh belépéseket, de megtiltsa az rsh/rlogin belépéseket. /etc/ssh/sshrc Az ebben a fájlban található parancsok akkor hajtódnak végre az ssh által, amikor felhasználó belép, közvetlenül azelőtt, hogy a felhasználó shellje (vagy parancsa) elindulna. Lásd az sshd kézikönyvlapot további információkért. $HOME/.ssh/rc Az ebben a fájlban található parancsok akkor lesznek végrehajtva az ssh által, amikor felhasználó belép, közvetlenül azelőtt, hogy a felhasználó shellje (vagy parancsa) elindulna. Lásd az sshd kézikönyvlapot további információkért.
INSTALLÁLÁS
Az ssh általában suid rootként van felinstallálva. A root jogokra csak az rhosts authentikáció miatt van szüksége (Az rhosts authentikáció azt igényli, hogy a kapcsolat egy privilégizált portról kezdeményeződjön, és ilyen portot csak root jogokkal lehet lefoglalni) Ezen kívül képesnek kell lennie arra, hogy a /etc/ssh/ssh_host_key -t elolvassa, hogy RSA gép authentikációt tudjon használni. Lehetséges az ssh -t root jogok nélkül használni, de akkor az rhosts authentikációt nem lehet használni. Az ssh eldobja az összes extra jogot, amint a kapcsolat a távoli géppel létrejött. Mindent megtettünk azért, hogy az ssh biztonságos legyen. Ha ennek ellenére biztonsági problémát találsz, kérjük rögtön értesíts minket az <ssh-bugs@cs.hut.fi> címen.
SZERZŐ
Tatu Ylonen <ylo@ssh.fi> Az újabb verziókról, levelezési listákról, és a többi kapcsolódó témáról az ssh WWW home page-n, a http://www.cs.hut.fi/ssh címen találsz információt.
LÁSD MÉG
sshd(8), ssh-keygen(1), ssh-agent(1), ssh-add(1), scp(1), make-ssh-known-hosts(1), rlogin(1), rsh(1), telnet(1)
MAGYAR FORDÍTÁS
Balázs-Csíki László <bcsl@elender.hu>