SSH-AGENT(1)

JMÉNO
ssh-agent - autentizační agent

POUŽITÍ

ssh-agent příkaz eval `ssh-agent [-k ] [-s ] [-c ]`

POPIS

Program ssh-agent shromažďuje soukromé autentizační klíče. Ssh-agent by měl být odstartován na začátku X-session nebo login session, a všechna okna nebo ostatní programy by měly být startovány jako jeho potomci (příkaz zadaný jako parametr slouží normálně ke startu X Window Systemu nebo je uživatelským shellem). Programy odstartované z agenta jsou s ním propojeny a automaticky jej používají pro RSA autentizaci při přihlašování na jiné stroje pomocí ssh.

Jestliže je ssh-agent odstartován bez parametrů, poběží jako proces v pozadí. Přitom vypíše na stdout příkazy, které mohou být při spuštění v příkazu eval v shellech odvozených z sh nebo csh použity pro nastavení proměnných prostředí SSH_AUTH_SOCK a SSH_AGENT_PID. Proměnná prostředí SSH_AGENT_PID může být použita pro ukončení agenta příkazem kill, když už není potřeba (například při odhlašování z X-session atd.). Nejsou-li zadány žádné volby, ssh-agent zjistí podle hodnoty proměnné prostředí SHELL, jaký shell (z rodiny *csh nebo *sh shellů) je použit. Volba -c způsobí vypsání příkazu pro nastavení proměnných prostředí ve stylu csh shellu, volba -s ve stylu sh shellu.

Pamatujte, že v Unixech odvozených od System V (přinejmenším v OS IRIX a Solaris) proměnná prostředí SHELL nemusí obsahovat jméno aktuálního shellu, který provádí příkaz eval. Jestliže je v /etc/default/login nastavena proměnná prostředí ALTSHELL na YES, je proměnná prostředí SHELL nastavena na uživatelův login shell.

Volba -k může být použita k automatickému ukončení agenta. Zabije agenta (pro jeho nalezení použije hodnotu proměnné prostředí SSH_AGENT_PID) a vypíše na stdout příkazy shellu, které zruší proměnné prostředí SSH_AUTH_SOCKET a SSH_AGENT_PID.

Agent zpočátku nemá žádný soukromý klíč. Klíče jsou přidávány příkazy ssh-add. Příkaz ssh-add při spuštění bez parametrů přidá obsah souboru $HOME/.ssh/identity. Jestliže má soubor přístupové heslo, ssh-add se na něj dotáže (použije malou X11 aplikaci pokud běží pod X11, nebo terminál pokud běží bez X). Potom zašle identitu agentovi. Agent může obsahovat několik identit; agent z nich vybere správnou automaticky. Příkaz ssh-add -l vypíše seznam identit aktuálně známých agentovi.

Výhodou je fakt, že agent je spuštěn na uživatelově lokálním PC, laptopu nebo terminálu. Autentizační data nemusí být uložena na žádném jiném stroji, a autentizační přístupová hesla nejsou nikdy posílána přes síť. Spojení s agentem je forwardované pomocí ssh, takže uživatel může bezpečně používat přístupová práva daná identitami kdekoli v síti.

Spojení s agentem je dostupné programům-potomkům. Toto spojení je realizováno unix-domain soketem (/tmp/ssh-$USER/agent-socket-<pid>), kde <pid> je číslo procesu posluchače (agenta nebo sshd démona realizujícího pro agenta proxy). Jméno tohoto soketu je uloženo v proměnné prostředí SSH_AUTH_SOCK. Soket je přístupný pouze pro aktuálního uživatele. Tato metoda je snadno zneužitelná superuživatelem nebo jinou instancí téhož uživatele. Starší verze ssh používaly pro komunikaci s agentem zděděné popisovače souborů a unix-domain sokety používaly nekompatibilním způsobem.

Jestliže byl jako parametr programu ssh-agent zadán příkaz, agent při skončení tohoto příkazu automaticky skončí také. Zadaný příkaz bude proveden, i kdyby agent nebyl schopen poskytovat své služby.

SOUBORY

$HOME/.ssh/identity
    Obsahuje RSA autentizační identitu uživatele. Tento soubor nesmí být čitelný nikým kromě uživatele. Při generování klíče je možné zadat přístupové heslo; toto heslo bude použito na zašifrování soukromé části souboru. Soubor není používán přímo programem ssh-agent, ale jeho obsah je příkazem ssh-add přidán do agenta.

/tmp/ssh-$USER/agent-socket-<pid>
    Unix-domain sokety použité pro spojení s autentizačním agentem. Sokety musí být čitelné pouze vlastníkem. Sokety musí být při ukončení agenta automaticky zrušeny. Nadřízený adresář adresáře ssh-$USER musí mít nastaven sticky bit.

AUTOR

Tatu Ylonen <ylo@ssh.fi>

VIZ TÉŽ
ssh-add(1), ssh-keygen(1), ssh(1), sshd(8)