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>