Comando Linux / Unix: sshd

Nom

sshd - dimoni SSH OpenSSH

Sinopsi

sshd [- deiqtD46 ] [- b bits ] [- f config_file ] [- g login_grace_time ] [- h host_key_file ] [- k key_gen_time ] [- o option ] [- port p ] [- u len ]

Descripció

sshd (dimoni SSH) és el programa dimoni per a ssh (1). Junts, aquests programes reemplacen a rlogin i rsh , i proporcioneu comunicacions xifrades segures entre dos amfitrions no fiables a través d'una xarxa insegura. Els programes estan pensats per ser tan fàcils d'instal·lar i utilitzar-los com sigui possible.

sshd és el dimoni que escolta les connexions dels clients. Normalment s'inicia a l'arrencada des de / etc / rc Es forca un nou dimoni per a cada connexió entrant. Els dimonis bifurcats manegen intercanvi de claus, xifratge, autenticació, execució d'ordres i intercanvi de dades. Aquesta implementació de sshd admet simultàniament el protocol SSH versió 1 i 2.

Protocol SSH versió 1

Cada host té una clau RSA específica de l'amfitrió (normalment 1024 bits) que s'utilitza per identificar l'amfitrió. A més, quan s'inicia el dimoni, genera una clau RSA del servidor (normalment 768 bits). Aquesta clau normalment es regenera cada hora si s'ha usat i mai no s'emmagatzema al disc.

Cada vegada que un client es connecta, el dimoni respon amb les seves claus d'amfitrió i servidor públic. El client compara la clau host de RSA amb la seva pròpia base de dades per verificar que no ha canviat. El client genera un número aleatori de 256 bits. Encripta aquest número aleatori usant la clau de l'amfitrió i la clau del servidor i envia el número xifrat al servidor. Ambdues cares utilitzen aquest número aleatori com una clau de sessió que s'utilitza per xifrar totes les comunicacions addicionals de la sessió. La resta de la sessió es xifra utilitzant un xifratge convencional, actualment Blowfish o 3DES, i 3DES s'utilitza per defecte. El client selecciona l' algoritme de xifratge que s'utilitzarà dels que ofereix el servidor.

A continuació, el servidor i el client introdueixen un diàleg d'autenticació. El client intenta autenticar-se usant l'autenticació .rhosts, l'autenticació de .rhosts combinada amb l'autenticació de host RSA, l'autenticació RSA challenge-response o l'autenticació basada en contrasenya .

L'autenticació de Rhosts normalment està desactivada perquè no està segura, però es pot activar en el fitxer de configuració del servidor si ho desitja. La seguretat del sistema no es millora a menys que rshd rlogind i rexecd estiguin desactivades (per tant, deshabilitem rlogin i rsh a la màquina).

Protocol SSH versió 2

La versió 2 funciona de manera similar: cada host té una clau específica de host (RSA o DSA) que s'utilitza per identificar el host. Tanmateix, quan s'inicia el dimoni, no genera una clau de servidor. La seguretat avançada es proporciona a través d'un acord clau Diffie-Hellman. Aquest acord clau dóna lloc a una clau de sessió compartida.

La resta de la sessió es xifra utilitzant un xifrat simètric, actualment AES de 128 bits, Blowfish, 3DES, CAST128, Arcfour, AES de 192 bits o AES de 256 bits. El client selecciona l'algoritme de xifratge que s'utilitzarà dels que ofereix el servidor. A més, la integritat de la sessió es proporciona mitjançant un codi d'autenticació de missatges criptogràfics (hmac-sha1 o hmac-md5).

La versió 2 del protocol proporciona un mètode d'autenticació de l'usuari basat en clau pública (PubkeyAuthentication) o client host (HostbasedAuthentication), autenticació de contrasenyes convencional i mètodes basats en resposta a desafiaments.

Execució de comandaments i reenviament de dades

Si el client s'autenticitza correctament, s'introdueix un diàleg per preparar la sessió. En aquest moment, el client pot sol·licitar coses com assignar una pseudo-tty, reenviar connexions X11, reenviar connexions TCP / IP o reenviar la connexió de l'agent d'autenticació sobre el canal segur.

Finalment, el client sol·licita un intèrpret d'ordres o una execució d'un comandament. Els costats entren al mode de sessió. En aquest mode, qualsevol dels bàndols pot enviar dades en qualsevol moment, i aquestes dades es reenvien a / des del shell o l'ordre del costat del servidor, i el terminal d'usuari al costat del client.

Quan el programa d'usuari finalitza i tots els X11 reenviats i altres connexions s'han tancat, el servidor envia l'estat de sortida del comandament al client i ambdues parts surten.

sshd es pot configurar mitjançant opcions de línia d'ordres o un fitxer de configuració. Les opcions de la línia de comandaments substitueixen els valors especificats en el fitxer de configuració.

sshd llegeix el fitxer de configuració quan rep un senyal de suspensió, SIGHUP executant-se amb el nom que va començar com, és a dir, / usr / sbin / sshd

Les opcions són les següents:

-b bits

Especifica el nombre de bits en la clau del servidor de la versió 1 del protocol efímer (per defecte 768).

-d

Mode de depuració. El servidor envia una sortida de depuració detallada al registre del sistema i no es posa en segon pla. El servidor també no funcionarà i només processarà una connexió. Aquesta opció només està dissenyada per depurar el servidor. Les opcions de múltiples opcions augmenten el nivell de depuració. El màxim és 3.

-e

Quan s'especifica aquesta opció, sshd enviarà la sortida a l'error estàndard en lloc del registre del sistema.

-f config_file

Especifica el nom del fitxer de configuració. El valor predeterminat és / etc / ssh / sshd_config sshd es nega a iniciar-se si no hi ha cap fitxer de configuració.

-g login_grace_time

Proporciona el temps de gràcia perquè els clients s'autenticin (per defecte 120 segons). Si el client no autentiqueu l'usuari en aquests segons, el servidor es desconnecta i surt. Un valor de zero indica que no hi ha límit.

-h host_key_file

Especifica un fitxer des del qual es llegeix una clau amfitrió. Aquesta opció s'ha de donar si sshd no s'executa com a root (ja que els fitxers de la clau d'amfitrió normal normalment no són llegibles per ningú, sinó per l'arrel). El valor predeterminat és / etc / ssh / ssh_host_key per a la versió de protocol 1 i / etc / ssh / ssh_host_rsa_key i / etc / ssh / ssh_host_dsa_key per a la versió de protocol 2. És possible tenir diversos fitxers de la màquina principal per a les diferents versions de protocol i la clau de l'amfitrió. algorismes.

-i

Especifica que sshd s'està executant des de inetd. sshd normalment no s'executa des de inetd perquè necessita generar la clau del servidor abans de poder respondre al client, i això pot trigar desenes de segons. Els clients haurien d'esperar massa temps si la clau es regenerava cada vegada. No obstant això, amb petites mides de claus (p.ex., 512) que utilitza sshd des de inetd pot ser factible.

-k key_gen_time

Especifica la freqüència amb la regeneració de la clau del servidor de la versió 1 del protocol efímer (per defecte 3600 segons o una hora). La motivació per regenerar la clau sovint és que la clau no s'emmagatzema en cap lloc i, al cap d'una hora, es fa impossible recuperar la clau per desxifrar les comunicacions interceptades, fins i tot si la màquina està esclafada o incautada físicament. Un valor de zero indica que mai no es regenerarà la clau.

-o opció

Es pot utilitzar per donar opcions al format utilitzat en el fitxer de configuració. Això és útil per especificar opcions per a les quals no hi ha cap indicador de línia d'ordres separat.

-p port

Especifica el port en què el servidor escolta les connexions (per defecte 22). Es permeten múltiples opcions de port. Els ports especificats en el fitxer de configuració s'ignoren quan s'especifica un port de línia d'ordres.

-q

Mode silenciós. No se us envia res al registre del sistema. Normalment es registren el començament, l'autenticació i la finalització de cada connexió.

-t

Mode de prova. Comproveu només la validesa del fitxer de configuració i el comportament de les claus. Això és útil per actualitzar sshd de forma fiable, ja que les opcions de configuració poden canviar.

-u len

Aquesta opció s'utilitza per especificar la mida del camp a l'estructura utmp que conté el nom de host remot. Si el nom d'amfitrió resolt és més llarg que el que s'utilitzarà el valor del punt decimal. Això permet que els amfitrions amb noms d'amfitrió molt llargs que desborden aquest camp encara siguin identificats de forma exclusiva. Especificant: u0 indica que només s'han d'introduir adreces decimals amb punts en el fitxer utmp. - u0 també s'utilitza per evitar que sshd faci sol·licituds DNS a menys que el mecanisme o la configuració de l'autenticació ho requereixi. Els mecanismes d'autenticació que poden requerir DNS inclouen RhostsAuthentication RhostsRSAAuthentication HostbasedAuthentication i que utilitzen una opció de = pattern-list en un fitxer de claus. Les opcions de configuració que necessiten DNS inclouen un patró USER @ HOST a AllowUsers o DenyUsers

-D

Quan s'especifica aquesta opció sshd no es desconnectarà i no es converteixi en dimoni. Això permet una fàcil monitorització de sshd

-4

Les forces sshd només usen adreces IPv4.

-6

Les forces sshd només usen adreces IPv6.

Fitxer de configuració

sshd llegeix les dades de configuració de / etc / ssh / sshd_config (o el fitxer especificat amb - f a la línia d'ordres). El format del fitxer i les opcions de configuració es descriuen a sshd_config5.

Procés d'inici de sessió

Quan un usuari inicia correctament, sshd fa el següent:

  1. Si l'inici de sessió està en un tty, i no s'ha especificat cap ordre, imprimeix el darrer temps d'accés i / etc / motd (tret que s'eviti el fitxer de configuració o $ HOME / .hushlogin, vegeu la secció Sx FILES).
  2. Si l'inici de sessió està en un tty, registra el temps d'inici de sessió.
  3. Comprova / etc / nologin si existeix, imprimeix continguts i surt (excepte root).
  4. Canvis a executar amb privilegis d'usuari normals.
  5. Estableix un entorn bàsic.
  6. Lee $ HOME / .ssh / environment si existeix i els usuaris poden canviar el seu entorn. Vegeu l'opció PermitUserEnvironment en sshd_config5.
  7. Canvis al directori personal de l'usuari.
  8. Si existeix $ HOME / .ssh / rc, executeu-lo; en cas contrari, si existeix / etc / ssh / sshrc, executeu-lo; en cas contrari s'executa xauth. Els fitxers `` rc '' reben el protocol d'autenticació X11 i les galetes a l'entrada estàndard.
  9. Executa la shell o l'ordre de l'usuari.

Format d'arxiu Authorized_Keys

$ HOME / .ssh / authorized_keys és el fitxer predeterminat que enumera les claus públiques que estan permeses per a l'autenticació RSA en la versió de protocol 1 i per a l'autenticació de clau pública (PubkeyAuthentication) en la versió de protocol 2. AutorisedKeysFile es pot utilitzar per especificar un fitxer alternatiu.

Cada línia del fitxer conté una clau (les línies buides i les línies que comencen amb un `# 'són ignorades com a comentaris). Cada clau pública de RSA consta dels següents camps, separats per espais: opcions, bits, exponent, mòdul, comentari. Cada clau pública de protocol 2 consta de: opcions, teclat, clau codificada base64, comentari. El camp Opcions és opcional; la seva presència es determina si la línia comença amb un nombre o no (el camp d'opcions mai no comença amb un número). Els camps de bits, exponent, mòdul i comentari donen la clau RSA per a la versió de protocol 1; el camp de comentari no s'utilitza per res (però pot ser convenient per a l'usuari identificar la clau). Per a la versió 2 del protocol, el tipus de teclat és `` ssh-dss '' o `` ssh-rsa ''

Tingueu en compte que les línies d'aquest fitxer solen ser diversos centenars de bytes de longitud (a causa de la mida de la codificació de la clau pública). No vols escriure'ls; en lloc d'això, copieu el fitxer id_dsa.pub id. identity.pub o el fitxer id_rsa.pub i editeu-lo.

sshd imposa una mida mínima de mòdul de clau RSA per a claus de protocol 1 i protocol de 768 bits.

Les opcions (si estan presents) consisteixen en especificacions d'opcions separades per comes. No es permeten espais, excepte en cometes dobles. Les següents especificacions d'opcions són compatibles (tingueu en compte que les paraules clau d'opció no distingeixen entre majúscules i minúscules):

de = llista de patrons

Especifica que a més de l'autenticació de la clau pública, el nom canònic de l'amfitrió remot ha d'estar present a la llista de patrons separats per comes (`* 'i`?' Com a comodins). La llista també pot contenir patrons negats prefixant-los amb `! ' ; si el nom de l'amfitrió canònic coincideix amb un patró negat, no s'accepta la clau. L'objectiu d'aquesta opció és incrementar opcionalment la seguretat: l'autenticació de la clau pública no confia en la xarxa ni en els servidors de noms ni en res (sinó en la clau); No obstant això, si algú roba d'alguna manera la clau, la clau permet que un intrús pugui iniciar sessió des de qualsevol part del món. Aquesta opció addicional fa que l'ús d'una clau robada sigui més difícil (els servidors de noms i / o els enrutadors haurien de ser compromesos, a més de només la clau).

command = command

Especifica que l'ordre s'executa sempre que aquesta clau s'utilitza per a l'autenticació. L'ordre subministrat per l'usuari (si n'hi ha) s'ignora. L'ordre s'executa en un pty si el client sol·licita un pty; en cas contrari s'executa sense un tty. Si es requereix un canal net de 8 bits, no s'ha de demanar un pty o s'ha d'especificar no-pty Es pot incloure una cita en la comanda, citant-la amb una barra invertida. Aquesta opció pot ser útil per restringir determinades claus públiques per realitzar només una operació específica. Un exemple pot ser una clau que permeti còpies de seguretat remotes, però res més. Tingueu en compte que el client pot especificar el reenviament TCP / IP i / o X11, tret que estiguin explícitament prohibits. Tingueu en compte que aquesta opció s'aplica a l'execució de shell, command o subsystem.

environment = NAME = valor

Especifica que la cadena s'afegeix a l'entorn quan inicieu la sessió amb aquesta clau. Les variables d'entorn establertes d'aquesta manera anul·len altres valors d'entorn predeterminats. Es permeten diverses opcions d'aquest tipus. El processament de l'entorn està desactivat de manera predeterminada i es controla mitjançant l'opció PermitUserEnvironment . Aquesta opció s'habilita automàticament si s'activa UseLogin .

no-port-forwarding

Prohibeix la reenviament de TCP / IP quan s'utilitza aquesta clau per a l'autenticació. Qualsevol demanda de port forward per part del client retornarà un error. Això es pot utilitzar, per exemple, en relació amb l'opció de comanda .

No-X11-reenviament

Prohibeix l'enviament de X11 quan s'utilitza aquesta clau per a l'autenticació. Qualsevol sol·licitud cap endavant X11 del client retornarà un error.

no-agent-reenviament

Prohibeix el reenviament de l'agent d'autenticació quan s'utilitza aquesta clau per a l'autenticació.

no-pty

Evita l'assignació de distribució (una sol·licitud d'assignació d'un pty fallarà).

permissionopen = host: port

Limiteu el reenviament del port `` ssh -L '' local de manera que només es pugui connectar a l'amfitrió i al port especificats. Les adreces IPv6 es poden especificar amb una sintaxi alternativa: host / port S'apliquen diverses opcions de permisos separades per comes. No es fa cap coincidència de patrons en els noms d'amfitrió especificats, han de ser dominis o adreces literals.

Exemples

1024 33 12121 ... 312314325 ylo@foo.bar

from = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 ... 2334 ylo @ niksula

command = "dump / home", no-pty, no-port-forwarding 1024 33 23 ... 2323 backup.hut.fi

permissionopen = "10.2.1.55:80", permissionopen = "10.2.1.56:25" 1024 33 23 ... 2323

Format de fitxer Ssh_Known_Hosts

Els fitxers / etc / ssh / ssh_known_hosts i $ HOME / .ssh / known_hosts contenen claus públiques d'amfitrió per a tots els hosts coneguts. El fitxer global ha de ser preparat per l'administrador (opcional), i el fitxer per usuari es manté automàticament: cada vegada que l'usuari es connecta des d'un host desconegut, la seva clau s'afegeix al fitxer per usuari.

Cada línia d'aquests fitxers conté els següents camps: noms d'amfitrió, bits, exponent, mòdul, comentari. Els camps estan separats per espais.

Els noms d'amfitrió són una llista de patrons separats per comes ('*' i '?' Actuen com comodins); cada patró, al seu torn, coincideix amb el nom de l'amfitrió canònic (quan s'autentiqui un client) o contra el nom proporcionat per l'usuari (quan s'autentiqui un servidor). Un patró també pot estar precedit per "!" per indicar la negació: si el nom del servidor coincideix amb un patró negatiu, no s'accepta (per aquesta línia), fins i tot si coincideix amb un altre patró a la línia.

Els bits, l'exponent i el mòdul es prenen directament des de la clau host de RSA; es poden obtenir, per exemple, a /etc/ssh/ssh_host_key.pub El camp de comentaris opcionals continua al final de la línia i no s'utilitza.

Les línies que comencen per `# 'i les línies buides s'ignoren com a comentaris.

Quan realitzeu l'autenticació de l'amfitrió, s'accepta l'autenticació si alguna línia coincident té la clau adequada. Per tant, es permet (però no es recomana) tenir diverses línies o claus d'amfitrions diferents per als mateixos noms. Això passarà inevitablement quan es posin formes curtes de noms d'amfitrió de diferents dominis en el fitxer. És possible que els fitxers contenen informació conflictiu; L'autenticació s'accepta si es pot trobar informació vàlida a qualsevol dels fitxers.

Tingueu en compte que les línies d'aquests fitxers solen tenir centenars de caràcters, i definitivament no voleu escriure manualment les claus de l'amfitrió. Al contrari, genereu-los per un script o agafeu /etc/ssh/ssh_host_key.pub i afegiu els noms d'amfitrió a la part frontal.

Exemples

closenet, ..., 130.233.208.41 1024 37 159 ... 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ..... =

Vegeu també

scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, modules (5), sshd_config5, sftp-server8

T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Arquitectura del Protocol SSH" draft-ietf-secsh-architecture-12.txt Gener 2002 material en curs

M. Friedl N. Provos WA Simpson "Intercanvi del grup Diffie-Hellman per al protocol de capa de transport SSH" draft-ietf-secsh-dh-group-exchange-02.txt gener de 2002 treball en progrés material

Important: utilitzeu l'ordre man ( % home ) per veure com s'utilitza una comanda a l'ordinador en particular.