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>