Nombre
sshd - El demonio OpenSSH SSH
Sinopsis
sshd -deiqtD46 -segundo pedacitos -F archivo de configuración -sol login_grace_time -h host_key_file -k key_gen_time -o opción -pag Puerto -tu len
Descripción
sshd (SSH Daemon) es el programa daemon para ssh (1). Juntos estos programas reemplazan rlogin y rsh, y proporcionar comunicaciones cifradas seguras entre dos hosts no confiables a través de una red insegura. Los programas están diseñados para ser tan fáciles de instalar y usar como sea posible.
sshd es el demonio que escucha las conexiones de los clientes. Normalmente se inicia en el arranque desde / etc / rc. Genera un nuevo daemon para cada conexión entrante. Los demonios bifurcados manejan el intercambio de claves, el cifrado, la autenticación, la ejecución de comandos y el intercambio de datos. Esta implementación desshd Soporta ambos protocolos SSH versión 1 y 2 simultáneamente.
Protocolo SSH Versión 1
Cada host tiene una clave RSA específica del host (normalmente 1024 bits) utilizada para identificar el host. Además, cuando se inicia el daemon, genera una clave RSA del servidor (normalmente 768 bits). Esta clave normalmente se regenera cada hora si se ha utilizado, y nunca se almacena en el disco.
Cada vez que un cliente se conecta, el daemon responde con sus claves públicas de servidor y host. El cliente compara la clave de host RSA con su propia base de datos para verificar que no haya cambiado. El cliente entonces genera un número aleatorio de 256 bits. Cifra este número aleatorio utilizando tanto la clave de host como la clave del servidor y envía el número cifrado al servidor. Ambos lados luego usan este número aleatorio como clave de sesión que se utiliza para cifrar todas las comunicaciones posteriores en la sesión. El resto de la sesión se encripta utilizando un cifrado convencional, actualmente Blowfish o 3DES, con el uso de 3DES por defecto. El cliente selecciona el algoritmo de cifrado para usar de los ofrecidos por el servidor.
A continuación, el servidor y el cliente entran en un cuadro de diálogo de autenticación. El cliente intenta autenticarse utilizando la autenticación .rhosts, la autenticación .rhosts combinada con la autenticación de host RSA, la autenticación de respuesta-desafío RSA o la autenticación basada en contraseña.
La autenticación de Rhosts normalmente está deshabilitada porque es fundamentalmente insegura, pero se puede habilitar en el archivo de configuración del servidor si se desea. La seguridad del sistema no mejora a menos quershdrlogind y rexecd están deshabilitados (por lo tanto, deshabilitan completamente rlogin y rsh en la máquina).
Protocolo de SSH versión 2
La versión 2 funciona de manera similar: cada host tiene una clave específica del host (RSA o DSA) utilizada para identificar el host. Sin embargo, cuando se inicia el daemon, no genera una clave de servidor. La seguridad hacia adelante se proporciona a través de un acuerdo clave Diffie-Hellman. Este acuerdo clave resulta en una clave de sesión compartida.
El resto de la sesión se cifra mediante un cifrado simétrico, actualmente AES de 128 bits, Blowfish, 3DES, CAST128, Arcfour, AES de 192 bits o AES de 256 bits. El cliente selecciona el algoritmo de cifrado para usar de los ofrecidos por el servidor. Además, la integridad de la sesión se proporciona a través de un código de autenticación de mensaje criptográfico (hmac-sha1 o hmac-md5).
La versión 2 del protocolo proporciona un método de autenticación de usuario basado en clave pública (PubkeyAuthentication) o host de cliente (HostbasedAuthentication), autenticación de contraseña convencional y métodos basados en desafío-respuesta.
Ejecución de comandos y reenvío de datos
Si el cliente se autentica correctamente, se ingresa un cuadro de diálogo para preparar la sesión. En este momento, el cliente puede solicitar cosas como asignar un pseudo-tty, reenviar conexiones X11, reenviar conexiones TCP / IP o reenviar la conexión del agente de autenticación a través del canal seguro.
Finalmente, el cliente solicita un shell o la ejecución de un comando. Los lados luego entran en modo de sesión. En este modo, cualquiera de los lados puede enviar datos en cualquier momento, y dichos datos se envían a / desde el shell o comando en el lado del servidor, y el terminal de usuario en el lado del cliente.
Cuando el programa de usuario finaliza y todas las X11 reenviadas y otras conexiones se han cerrado, el servidor envía el estado de salida del comando al cliente y ambos lados salen.
sshd se puede configurar utilizando opciones de línea de comandos o un archivo de configuración. Las opciones de la línea de comandos anulan los valores especificados en el archivo de configuración.
sshd vuelve a leer su archivo de configuración cuando recibe una señal de bloqueo,SIGHUP ejecutándose a sí mismo con el nombre que se inició como, es decir, / usr / sbin / sshd
Las opciones son las siguientes:
-segundo pedacitos
Especifica el número de bits en la clave del servidor de la versión 1 del protocolo efímero (predeterminado 768).
-re
Modo de depuración. El servidor envía una salida de depuración detallada al registro del sistema y no se coloca en segundo plano. El servidor tampoco funcionará y solo procesará una conexión. Esta opción solo está destinada a la depuración del servidor. Las opciones -d múltiples aumentan el nivel de depuración. El máximo es 3.
-mi
Cuando se especifica esta opción,sshd enviará la salida al error estándar en lugar del registro del sistema.
-F archivo de configuración
Especifica el nombre del archivo de configuración. El valor predeterminado es / etc / ssh / sshd_configsshdse niega a iniciar si no hay un archivo de configuración.
-sol login_grace_time
Da el tiempo de gracia para que los clientes se autentiquen (por defecto 120 segundos). Si el cliente no autentica al usuario dentro de estos segundos, el servidor se desconecta y sale.Un valor de cero indica que no hay límite.
-h host_key_file
Especifica un archivo desde el que se lee una clave de host. Esta opción debe darse sisshd no se ejecuta como root (ya que los archivos de clave de host normales normalmente no son legibles por nadie más que root). El valor predeterminado es / etc / ssh / ssh_host_key para el protocolo versión 1, y / etc / ssh / ssh_host_rsa_key y / etc / ssh / ssh_host_dsa_key para el protocolo versión 2. Es posible tener varios archivos de clave de host para las diferentes versiones de protocolo y clave de host algoritmos
-yo
Especifica quesshd se está ejecutando desde inetd.sshd normalmente no se ejecuta desde inetd porque necesita generar la clave del servidor antes de que pueda responder al cliente, y esto puede llevar decenas de segundos. Los clientes tendrían que esperar demasiado si la clave se regenera cada vez. Sin embargo, con tamaños de clave pequeños (por ejemplo, 512) usandosshd desde inetd puede ser factible.
-k key_gen_time
Especifica con qué frecuencia se regenera la clave del servidor de la versión 1 del protocolo efímero (3600 segundos predeterminados, o una hora). La motivación para regenerar la clave con bastante frecuencia es que la clave no se almacena en ningún lugar, y después de aproximadamente una hora, resulta imposible recuperar la clave para descifrar las comunicaciones interceptadas, incluso si la máquina está dañada o incautada físicamente. Un valor de cero indica que la clave nunca se regenerará.
-o opción
Se puede utilizar para dar opciones en el formato utilizado en el archivo de configuración. Esto es útil para especificar opciones para las cuales no hay un indicador de línea de comando separado.
-pag Puerto
Especifica el puerto en el que el servidor escucha las conexiones (valor predeterminado 22). Se permiten múltiples opciones de puerto. Los puertos especificados en el archivo de configuración se ignoran cuando se especifica un puerto de línea de comandos.
-q
Modo silencioso. No se envía nada al registro del sistema. Normalmente se registran el inicio, la autenticación y la terminación de cada conexión.
-t
Modo de prueba. Solo verifique la validez del archivo de configuración y la cordura de las claves. Esto es útil para actualizarsshd de forma fiable ya que las opciones de configuración pueden cambiar.
-u len
Esta opción se utiliza para especificar el tamaño del campo en elutmp Estructura que contiene el nombre del host remoto. Si el nombre de host resuelto es más largo que len el valor decimal punteado se utilizará en su lugar. Esto permite que los hosts con nombres de host muy largos que desbordan este campo se identifiquen de forma única. Especificando -u0 indica que solo las direcciones decimales con puntos se deben colocar en el archivo utmp. -u0 También se utiliza para prevenir.sshd desde realizar solicitudes de DNS a menos que el mecanismo de autenticación o la configuración lo requiera. Los mecanismos de autenticación que pueden requerir DNS incluyenRhostsAuthenticationRhostsRSAAuthentication Autenticación basada en host y usando unde = lista de patronesOpción en un archivo clave. Las opciones de configuración que requieren DNS incluyen el uso de un USER @ HOSTpattern enPermitir a los usuarios oDenyUsers
-RE
Cuando se especifica esta opciónsshd No se desprenderá y no se convertirá en un demonio. Esto permite un fácil monitoreo desshd
-4
Efectivosshd para usar direcciones IPv4 solamente.
-6
Efectivosshd para utilizar direcciones IPv6 solamente.
Archivo de configuración
sshd lee datos de configuración de / etc / ssh / sshd_config (o el archivo especificado con -F en la línea de comando). El formato de archivo y las opciones de configuración se describen en sshd_config5.
Proceso de inicio de sesión
Cuando un usuario inicia sesión correctamente,sshd hace lo siguiente:
- Si el inicio de sesión está en un tty, y no se ha especificado ningún comando, se imprime la última hora de inicio de sesión y / etc / motd (a menos que se prevenga en el archivo de configuración o por $ HOME / .hushlogin, consulte la sección SX FILES).
- Si el inicio de sesión está en un tty, registra el tiempo de inicio de sesión.
- Comprueba / etc / nologin si existe, imprime el contenido y se cierra (a menos que sea root).
- Cambios para ejecutar con privilegios de usuario normales.
- Establece el entorno básico.
- Lee $ HOME / .ssh / environment si existe y los usuarios pueden cambiar su entorno. Ver elPermitUserEnvironment Opción en sshd_config5.
- Cambios en el directorio de inicio del usuario.
- Si $ HOME / .ssh / rc existe, lo ejecuta; de lo contrario, si / etc / ssh / sshrc existe, lo ejecuta; de lo contrario ejecuta xauth. Los archivos `` rc '' reciben el protocolo de autenticación X11 y la cookie en la entrada estándar.
- Ejecuta shell o comando del usuario.
Formato de archivo de Authorized_Keys
$ HOME / .ssh / authorized_keys es el archivo predeterminado que enumera las claves públicas permitidas para la autenticación RSA en la versión 1 del protocolo y para la autenticación de la clave pública (PubkeyAuthentication) en la versión 2 del protocolo.AuthorizedKeysFile Se puede utilizar para especificar un archivo alternativo.
Cada línea del archivo contiene una clave (las líneas vacías y las líneas que comienzan con `# 'se ignoran como comentarios). Cada clave pública RSA consta de los siguientes campos, separados por espacios: opciones, bits, exponente, módulo, comentario. Cada clave pública de la versión 2 del protocolo consta de: opciones, tipo de clave, clave codificada en base64, comentario. El campo de opciones es opcional; su presencia está determinada por si la línea comienza con un número o no (el campo de opciones nunca comienza con un número). Los campos de bits, exponente, módulo y comentario proporcionan la clave RSA para la versión 1 del protocolo; el campo de comentario no se usa para nada (pero puede ser conveniente para el usuario identificar la clave). Para la versión 2 del protocolo, el tipo de clave es `` ssh-dss '' o `` ssh-rsa ''
Tenga en cuenta que las líneas de este archivo suelen tener varios cientos de bytes de longitud (debido al tamaño de la codificación de clave pública). No quieres escribirlos; en su lugar, copie el archivo identity.pub id_dsa.pub o id_rsa.pub y edítelo.
sshd aplica un tamaño de módulo de clave RSA mínimo para las claves de protocolo 1 y protocolo 2 de 768 bits.
Las opciones (si están presentes) consisten en especificaciones de opciones separadas por comas. No se permiten espacios, excepto entre comillas dobles. Se admiten las siguientes especificaciones de opciones (tenga en cuenta que las palabras clave de las opciones no distinguen entre mayúsculas y minúsculas):
de = lista de patrones
Especifica que, además de la autenticación de clave pública, el nombre canónico del host remoto debe estar presente en la lista de patrones separados por comas (`* 'y`?' Sirven como comodines). La lista también puede contener patrones negados prefijándolos con '!' ; Si el nombre de host canónico coincide con un patrón negado, no se acepta la clave. El propósito de esta opción es aumentar opcionalmente la seguridad: la autenticación de la clave pública por sí sola no confía en la red ni en los servidores de nombres ni nada (sino la clave); sin embargo, si alguien roba la clave de alguna manera, la clave permite que un intruso inicie sesión desde cualquier parte del mundo. Esta opción adicional hace que el uso de una clave robada sea más difícil (los servidores de nombres y / o enrutadores tendrían que verse comprometidos además de la clave).
comando = comando
Especifica que el comando se ejecuta siempre que esta clave se utiliza para la autenticación. El comando suministrado por el usuario (si lo hay) se ignora. El comando se ejecuta en una pty si el cliente solicita una pty; De lo contrario se ejecuta sin un tty. Si se requiere un canal limpio de 8 bits, uno no debe solicitar una pty o debe especificarno-pty Se puede incluir una cita en el comando citándola con una barra invertida. Esta opción puede ser útil para restringir ciertas claves públicas para realizar solo una operación específica. Un ejemplo podría ser una clave que permita copias de seguridad remotas pero nada más. Tenga en cuenta que el cliente puede especificar el reenvío de TCP / IP y / o X11 a menos que estén explícitamente prohibidos. Tenga en cuenta que esta opción se aplica a la ejecución de shell, comando o subsistema.
ambiente = NOMBRE = valor
Especifica que la cadena se agregará al entorno al iniciar sesión con esta clave. Las variables de entorno configuradas de esta manera anulan otros valores de entorno predeterminados. Se permiten múltiples opciones de este tipo. El procesamiento del entorno está deshabilitado por defecto y se controla a través dePermitUserEnvironment opción. Esta opción se desactiva automáticamente siUseLogin está habilitado.
sin reenvío de puertos
Prohibe el reenvío de TCP / IP cuando esta clave se utiliza para la autenticación. Cualquier solicitud de reenvío de puerto por parte del cliente devolverá un error. Esto podría usarse, por ejemplo, en relación con elmando opción.
no-X11-reenvío
Forbids X11 reenvío cuando esta clave se utiliza para la autenticación. Cualquier solicitud de reenvío X11 por parte del cliente devolverá un error.
sin agente de reenvío
Prohibir el reenvío del agente de autenticación cuando esta clave se utiliza para la autenticación.
no-pty
Previene la asignación tty (una solicitud para asignar una pty fallará).
permitopen = host: puerto
Limitar local`ssh -L '' reenvío de puertos de modo que solo se pueda conectar al host y al puerto especificados. Las direcciones IPv6 se pueden especificar con una sintaxis alternativa: Puerto host Múltiple Permitir abrir Las opciones se pueden aplicar separadas por comas. No se realiza una coincidencia de patrón en los nombres de host especificados, deben ser dominios o direcciones literales.
Ejemplos
1024 33 12121 … 312314325 [email protected]
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
permitopen = "10.2.1.55:80", permitopen = "10.2.1.56:25" 1024 33 23 … 2323
Formato de archivo Ssh_Known_Hosts
Los archivos / etc / ssh / ssh_known_hosts y $ HOME / .ssh / known_hosts contienen claves públicas de host para todos los hosts conocidos. El administrador debe preparar el archivo global (opcional), y el archivo por usuario se mantiene automáticamente: cada vez que el usuario se conecta desde un host desconocido, su clave se agrega al archivo por usuario.
Cada línea en estos archivos contiene los siguientes campos: nombres de host, bits, exponente, módulo, comentario. Los campos están separados por espacios.
Los nombres de host son una lista de patrones separados por comas ('*' y '?' Actúan como comodines); cada patrón, a su vez, se compara con el nombre de host canónico (cuando se autentica un cliente) o con el nombre proporcionado por el usuario (cuando se autentica un servidor). Un patrón también puede estar precedido por '!' para indicar negación: si el nombre del host coincide con un patrón negado, no se acepta (por esa línea) incluso si coincide con otro patrón en la línea.
Los bits, el exponente y el módulo se toman directamente de la clave de host RSA; se pueden obtener, por ejemplo, de /etc/ssh/ssh_host_key.pub El campo de comentario opcional continúa hasta el final de la línea, y no se utiliza.
Las líneas que comienzan con `# 'y las líneas vacías se ignoran como comentarios.
Al realizar la autenticación del host, se acepta la autenticación si alguna línea coincidente tiene la clave adecuada. Por lo tanto, se permite (pero no se recomienda) tener varias líneas o claves de host diferentes para los mismos nombres. Esto ocurrirá inevitablemente cuando se coloquen formas cortas de nombres de host de diferentes dominios en el archivo. Es posible que los archivos contengan información conflictiva; se acepta la autenticación si se puede encontrar información válida de cualquiera de los archivos.
Tenga en cuenta que las líneas de estos archivos suelen tener una longitud de cientos de caracteres, y definitivamente no desea escribir las claves de host a mano. Más bien, genérelos con un script o tomando /etc/ssh/ssh_host_key.pub y agregue los nombres de host en la parte frontal.
Ejemplos
closenet, …, 130.233.208.41 1024 37 159 … 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ….. =
Ver también
scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, módulos (5), sshd_config5, sftp-server8
T. Ylonen T. Kivinen M. Saarinen T. Rinne S. Lehtinen "Arquitectura de protocolo SSH" draft-ietf-secsh-architecture-12.txt Material de trabajo en progreso en enero de 2002
M. Friedl N. Provos W. A. Simpson "Intercambio del grupo Diffie-Hellman para el protocolo de capa de transporte SSH" draft-ietf-secsh-dh-group-exchange-02.txt enero de 2002 material de trabajo en progreso
Importante: Utilizar el hombre comando % hombre ) para ver cómo se usa un comando en su computadora en particular.