OpenSSH (también conocido como OpenBSD Secure Shell [ a ] ) es un conjunto de utilidades de red seguras basadas en el protocolo Secure Shell (SSH), que proporciona un canal seguro sobre una red no segura en una arquitectura cliente-servidor . [ 4 ] [ 5 ]
OpenSSH comenzó como una bifurcación del programa SSH gratuito desarrollado por Tatu Ylönen; las versiones posteriores del SSH de Ylönen fueron software propietario ofrecido por SSH Communications Security . [ 6 ] OpenSSH se lanzó por primera vez en 1999 y actualmente se desarrolla como parte del sistema operativo OpenBSD .
OpenSSH no es un único programa informático, sino un conjunto de programas que sirven como alternativas a protocolos no cifrados como Telnet y FTP . OpenSSH está integrado en varios sistemas operativos, concretamente Microsoft Windows , macOS y la mayoría de los sistemas operativos Linux , [ 7 ] [ 8 ] mientras que la versión portátil está disponible como paquete en otros sistemas. [ 9 ] [ 10 ] [ 11 ]
Historia
OpenBSD Secure Shell fue desarrollado por desarrolladores de OpenBSD como una alternativa al software SSH original de Tatu Ylönen, que ahora es software propietario . [ 12 ] Aunque el código fuente está disponible para el SSH original, se imponen varias restricciones a su uso y distribución. OpenSSH fue creado como una bifurcación de OSSH de Björn Grönvall que a su vez era una bifurcación de la versión 1.2.12 del SSH gratuito original de Tatu Ylönen, [ 13 ] que fue la última con una licencia adecuada para bifurcación. [ 14 ] [ 15 ] Los desarrolladores de OpenSSH afirman que su aplicación es más segura que la original, debido a su política de producir código limpio y auditado y porque se publica bajo la licencia BSD , la licencia de código abierto a la que se refiere la palabra " open" en el nombre.
OpenSSH apareció por primera vez en OpenBSD 2.6. La primera versión portátil se publicó en octubre de 1999. [ 16 ] Los desarrollos desde entonces han incluido la adición de cifrados (por ejemplo, ChaCha20-Poly1305 en la versión 6.5 de enero de 2014 [ 17 ] ), la reducción de la dependencia de OpenSSL (versión 6.7, octubre de 2014 [ 18 ] ) y una extensión para facilitar el descubrimiento y la rotación de claves públicas para hosts de confianza (para la transición de claves de host públicas DSA a Ed25519 , versión 6.8 de marzo de 2015 [ 19 ] ).
El 19 de octubre de 2015, Microsoft anunció que OpenSSH sería compatible de forma nativa con Microsoft Windows y accesible a través de PowerShell , publicando una implementación preliminar y poniendo el código a disposición del público. [ 20 ] Los programas cliente y servidor basados en OpenSSH se han incluido en Windows 10 desde la versión 1803. El cliente SSH y el agente de claves están habilitados y disponibles de forma predeterminada, y el servidor SSH es una característica opcional a petición. [ 21 ]
En octubre de 2019 se añadió en OpenSSH 8.1 protección para las claves privadas en reposo en la RAM contra la especulación y los ataques de canal lateral de memoria. [ 22 ]
Desarrollo

OpenSSH se desarrolla como parte del sistema operativo OpenBSD . En lugar de incorporar directamente en OpenSSH las modificaciones para otros sistemas operativos, el Equipo de Portabilidad de OpenSSH mantiene una infraestructura de portabilidad independiente y publica periódicamente versiones compatibles. Esta infraestructura es considerable, en parte porque OpenSSH debe realizar la autenticación , una funcionalidad que cuenta con numerosas implementaciones. Este modelo también se utiliza en otros proyectos de OpenBSD, como OpenNTPD .
El paquete OpenSSH incluye las siguientes utilidades de línea de comandos y demonios :
- scp , un reemplazo para rcp .
- sftp , un sustituto de ftp para copiar archivos entre ordenadores.
- ssh , un reemplazo para rlogin , rsh y telnet para permitir el acceso a la línea de comandos de una máquina remota.
- ssh-add y ssh-agent son utilidades que facilitan la autenticación al mantener las claves listas y evitar la necesidad de introducir contraseñas cada vez que se utilizan.
- ssh-keygen , una herramienta para inspeccionar y generar las claves RSA , DSA y de curva elíptica que se utilizan para la autenticación de usuarios y hosts .
- ssh-keyscan , que escanea una lista de hosts y recopila sus claves públicas.
- sshd , el demonio del servidor SSH.
El servidor OpenSSH puede autenticar usuarios utilizando los métodos estándar compatibles con el protocolo SSH : con contraseña; autenticación de clave pública , utilizando claves por usuario; autenticación basada en host, que es una versión segura de las relaciones de confianza de host de rlogin utilizando claves públicas; interactiva por teclado, un mecanismo genérico de desafío-respuesta , que se usa a menudo para la autenticación simple por contraseña, pero que también puede usar autenticadores más robustos como tokens ; y Kerberos / GSSAPI . El servidor utiliza métodos de autenticación nativos del sistema operativo del host; esto puede incluir el uso del sistema de autenticación BSD o módulos de autenticación conectables (PAM) para habilitar autenticación adicional a través de métodos como contraseñas de un solo uso . Sin embargo, esto ocasionalmente tiene efectos secundarios: cuando se usa PAM con OpenSSH, debe ejecutarse como root , ya que normalmente se requieren privilegios de root para operar PAM. Las versiones de OpenSSH posteriores a la 3.7 (16 de septiembre de 2003) permiten deshabilitar PAM en tiempo de ejecución, por lo que los usuarios normales pueden ejecutar instancias de sshd.
En OpenBSD, OpenSSH utiliza por defecto un usuario sshd dedicado para reducir privilegios y realizar una separación de privilegios de acuerdo con el principio de mínimo privilegio , aplicado en todo el sistema operativo , incluido el servidor Xenocara X.
Características
OpenSSH incluye la capacidad de establecer un canal seguro a través del cual los datos enviados a sockets de dominio Unix locales del lado del cliente o puertos TCP locales del lado del cliente pueden ser " reenviados " (enviados a través del canal seguro) para su enrutamiento en el lado del servidor; cuando se establece este reenvío, se le indica al servidor que envíe esos datos reenviados a algún socket o host/puerto TCP (el host podría ser el propio servidor, "localhost"; o bien, el host podría ser otra computadora, de modo que a la otra computadora le parezca que el servidor es el origen de los datos). El reenvío de datos es bidireccional, lo que significa que cualquier comunicación de retorno se reenvía de vuelta al lado del cliente de la misma manera; esto se conoce como un " túnel SSH " [ 23 ] y se ha utilizado para multiplexar conexiones TCP adicionales sobre una única conexión SSH desde 2004 [ 24 ] , para ocultar conexiones, para cifrar protocolos que de otro modo no serían seguros y para eludir los cortafuegos enviando/recibiendo todo tipo de datos a través de un puerto permitido por el cortafuegos. Por ejemplo, se puede crear automáticamente un túnel del sistema X Window al usar OpenSSH para conectarse a un host remoto, y otros protocolos, como HTTP y VNC , se pueden reenviar fácilmente. [ 25 ]
El tunelizado de una carga útil encapsulada en TCP (como PPP ) sobre una conexión basada en TCP (como el reenvío de puertos de SSH ) se conoce como "TCP sobre TCP", y hacerlo puede inducir una pérdida drástica en el rendimiento de la transmisión debido al problema de colapso de TCP , [ 26 ] [ 27 ] razón por la cual el software de red privada virtual puede utilizar para la conexión del túnel un protocolo más simple que TCP. Sin embargo, esto a menudo no es un problema cuando se utiliza el reenvío de puertos de OpenSSH, porque muchos casos de uso no implican tunelizado TCP sobre TCP; el colapso se evita porque el cliente OpenSSH procesa la conexión TCP local del lado del cliente para obtener la carga útil real que se está enviando, y luego envía esa carga útil directamente a través de la propia conexión TCP del túnel al lado del servidor, donde el servidor OpenSSH de manera similar "desenvuelve" la carga útil para "envolverla" nuevamente para enrutarla a su destino final. [ 28 ]
Además, algunos programas de terceros incluyen soporte para la tunelización a través de SSH. Entre ellos se encuentran DistCC , CVS , rsync y Fetchmail . En algunos sistemas operativos, los sistemas de archivos remotos se pueden montar a través de SSH utilizando herramientas como sshfs (mediante FUSE ).
Se puede crear un servidor proxy SOCKS ad hoc utilizando OpenSSH. Esto permite una configuración de proxy más flexible que la que ofrece el reenvío de puertos convencional.
A partir de la versión 4.3, OpenSSH implementa una VPN basada en tun de la capa 2/3 del modelo OSI . Esta es la capacidad de tunelización más flexible de OpenSSH, que permite a las aplicaciones acceder de forma transparente a los recursos de red remotos sin necesidad de modificaciones para utilizar SOCKS. [ 29 ]
Tipos de clave pública compatibles
OpenSSH admite los siguientes tipos de clave pública: [ 30 ] [ 31 ]
- ssh- dss (deshabilitado en tiempo de ejecución desde OpenSSH 7.0, publicado en 2015) [ 32 ]
- ssh- rsa (deshabilitado en tiempo de ejecución desde OpenSSH 8.8, publicado en 2021) [ 33 ]
- ecdsa - sha2 -nistp256 (desde OpenSSH 5.7, publicado en 2011) [ 34 ]
- ecdsa - sha2 -nistp384 (desde OpenSSH 5.7)
- ecdsa - sha2 -nistp521 (desde OpenSSH 5.7)
- ssh- ed25519 (desde OpenSSH 6.5, publicado en 2014) [ 35 ]
- rsa - sha2 -256 (desde OpenSSH 7.2, publicado en 2016) [ 36 ]
- rsa - sha2 -512 (desde OpenSSH 7.2)
- ecdsa -sk (desde OpenSSH 8.2, publicado en 2020) [ 37 ]
- ed25519 -sk (desde OpenSSH 8.2)
Vulnerabilidades
Antes de la versión 5.2 de OpenSSH, un atacante podía recuperar hasta 14 bits de texto plano con una probabilidad de éxito de 2⁻¹⁴ . [ 38 ] La vulnerabilidad estaba relacionada con el modo de cifrado CBC. El modo AES CTR y los cifrados arcfour no son vulnerables a este ataque.
Existía una vulnerabilidad de escalada de privilegios local en OpenSSH 6.8 a 6.9 ( CVE - 2015-6565 ) debido a dispositivos TTY con permisos de escritura para todos (622) , lo que se creía que era una vulnerabilidad de denegación de servicio . [ 39 ] Mediante el uso de TIOCSTI ioctl , era posible que usuarios autenticados inyectaran caracteres en las terminales de otros usuarios y ejecutaran comandos arbitrarios en Linux. [ 40 ]
Los servidores OpenSSH maliciosos o comprometidos podrían leer información confidencial del cliente, como claves de inicio de sesión privadas para otros sistemas, utilizando una vulnerabilidad que se basa en la función no documentada de reanudación de conexión del cliente OpenSSH, denominada itinerancia, habilitada por defecto en el cliente, pero no compatible con el servidor OpenSSH. Esto afecta a las versiones 5.4 (lanzada el 8 de marzo de 2010 [ 41 ] ) a 7.1 del cliente OpenSSH, y se corrigió en OpenSSH 7.1p2, lanzado el 14 de enero de 2016. Los números CVE asociados a esta vulnerabilidad son CVE - 2016-0777 (fuga de información) y CVE - 2016-0778 (desbordamiento de búfer). [ 42 ] [ 43 ]
El 29 de marzo de 2024, se informó de un grave ataque a la cadena de suministro de XZ Utils , dirigido indirectamente al servidor OpenSSH (sshd) que se ejecuta en Linux. El código de OpenSSH no se ve afectado directamente, ya que la puerta trasera se origina por las dependencias de liblzma a través de libsystemd , que podrían estar presentes en varias distribuciones de Linux.
El 1 de julio de 2024 se reveló la vulnerabilidad de seguridad RegreSSHion , que podría permitir a un atacante remoto provocar la ejecución de código arbitrario en OpenSSH y obtener acceso de administrador completo. Esta vulnerabilidad se introdujo inadvertidamente en la versión anterior de OpenSSH, la 8.5p1, en octubre de 2020, y se corrigió posteriormente en la versión 9.8/9.8p1. [ 44 ] [ 45 ]
Marca
En febrero de 2001, Tatu Ylönen, presidente y CTO de SSH Communications Security, informó a la lista de correo de desarrollo de OpenSSH que la empresa tenía la intención de reivindicar la propiedad de las marcas comerciales "SSH" y "Secure Shell" [ 46 ] y buscaba cambiar las referencias al protocolo a "SecSH" o "secsh" para mantener el control del nombre "SSH". Propuso que OpenSSH cambiara su nombre para evitar una demanda, una sugerencia a la que los desarrolladores se opusieron. El desarrollador de OpenSSH, Damien Miller, respondió instando a Ylönen a reconsiderar su postura, argumentando que "SSH" era desde hacía tiempo una marca comercial genérica [ 47 ] .
En aquel momento, "SSH", "Secure Shell" y "ssh" habían aparecido en documentos que proponían el protocolo como un estándar abierto. Al no marcarlos como marcas registradas dentro de la propuesta, Ylönen corría el riesgo de renunciar a todos los derechos exclusivos sobre el nombre como medio para describir el protocolo. El uso indebido de una marca registrada, o permitir que otros la usen incorrectamente, da como resultado que la marca se convierta en un término genérico, como Aspirina , lo que permite que otros la usen. [ 48 ] Después de estudiar la base de datos de marcas registradas de la USPTO , muchos expertos en línea opinaron que el término "ssh" no estaba registrado como marca, sino solo el logotipo que usaba las letras minúsculas "ssh". Además, los seis años transcurridos entre la creación de la empresa y el momento en que comenzó a defender su marca registrada, y el hecho de que solo OpenSSH recibiera amenazas de repercusiones legales, pesaban en contra de la validez de la marca. [ 49 ]
Tanto los desarrolladores de OpenSSH como el propio Ylönen eran miembros del grupo de trabajo del IETF que desarrollaba el nuevo estándar; tras varias reuniones, este grupo denegó la solicitud de Ylönen de cambiar el nombre del protocolo, alegando que sentaría un mal precedente para otras reclamaciones de marcas registradas contra el IETF. Los participantes argumentaron que tanto "Secure Shell" como "SSH" eran términos genéricos y no podían ser marcas registradas. [ 6 ]
Véase también
Notas
- ↑ El nombre "OpenBSD Secure Shell" se utiliza principalmente en varios scripts de inicio de sshd .
Referencias
- ↑ "Versión 10.4" . 6 de julio de 2026. Consultado el 6 de julio de 2026 .
- ↑ "Versión portátil de OpenSSH" . OpenBSD . Consultado el 15 de octubre de 2015 .
- ↑ "Especificaciones implementadas por OpenSSH" . El proyecto OpenBSD . Consultado el 14 de octubre de 2015 .
- ↑ Venkatachalam, Girish (abril de 2007). "El protocolo OpenSSH bajo la cubierta". Linux Journal ( 156): 74–77 – a través de la base de datos Discovery en LSU.
- ↑ Grupo de Trabajo de Redes del IETF, enero de 2006, RFC 4252, Protocolo de autenticación Secure Shell (SSH).
- 1 2 Duffy Marsan, Carolyn (22 de marzo de 2001). "Se deniega la solicitud de registro de marca al inventor de Secure Shell" . ITworld.com . Recuperado el 14 de diciembre de 2021 .
- ↑ "dragonfly.git/blob - crypto/openssh/README" . gitweb.dragonflybsd.org . Consultado el 19 de mayo de 2016.
Este es el puerto del excelente OpenSSH de OpenBSD para Linux y otros sistemas Unice.
- ↑ "src/crypto/external/bsd/openssh/dist/README - view - 1.4" . Repositorios CVS de NetBSD . Consultado el 19 de mayo de 2016 .
- ↑ "openssh" . OpenSUSE . Consultado el 17 de mayo de 2016 .
- ↑ "Debian -- Detalles del paquete openssh-client en jessie" . Debian . Consultado el 17 de mayo de 2016 .
- ↑ "Arch Linux - openssh 7.2p2-1 (x86_64)" . Arch Linux . Consultado el 17 de mayo de 2016 .
- ↑ "Historial del proyecto y créditos" . OpenBSD . Consultado el 8 de abril de 2008 .
- ↑ Fuentes OSSH
- ↑ ssh-1.2.13 ya está disponible: la política de copia ha cambiado (ahora se requiere permiso para vender ssh comercialmente, su uso sigue estando permitido para cualquier propósito).
- ↑ "OpenSSH: Historia del proyecto y créditos" . openssh.com. 22 de diciembre de 2004. Consultado el 27 de febrero de 2014 .
- ↑ "OpenSSH portátil – Freecode" . Freshmeat.net . Consultado el 11 de febrero de 2014 .
- ↑ Murenin, Constantine A. (11 de diciembre de 2013). Unknown Lamer (ed.). "OpenSSH tiene un nuevo cifrado: Chacha20-poly1305, de DJ Bernstein" . Slashdot . Recuperado el 26 de diciembre de 2014 .
- ↑Murenin, Constantine A. (30 April 2014). Soulskill (ed.). "OpenSSH No Longer Has To Depend On OpenSSL". Slashdot. Retrieved 26 December 2014.
- ↑Murenin, Constantine A. (1 February 2015). Soulskill (ed.). "OpenSSH Will Feature Key Discovery and Rotation For Easier Switching To Ed25519". Slashdot. Retrieved 1 February 2015.
- ↑"OpenSSH for Windows Update". 19 October 2015. Retrieved 23 October 2015.
- ↑Durr, Yosef (7 March 2018). "What's new for the Command Line in Windows 10 version 1803". Windows Command Line Tools For Developers.
- ↑"OpenSSH 8.1 Release Notes". OpenSSH. 9 October 2019. Retrieved 18 November 2024.
- ↑"OpenBSD manual pages: SSH". openbsd.org. 3 July 2014. Retrieved 14 July 2014.
- ↑"OpenSSH Release Notes".
- ↑"Features". OpenSSH. Retrieved 26 June 2016.
- ↑Titz, Olaf (23 April 2001). "Why TCP Over TCP Is A Bad Idea". Retrieved 17 October 2015.
- ↑Honda, Osamu; Ohsaki, Hiroyuki; Imase, Makoto; Ishizuka, Mika; Murayama, Junichi (October 2005). "Understanding TCP over TCP: effects of TCP tunneling on end-to-end throughput and latency". In Atiquzzaman, Mohammed; Balandin, Sergey I (eds.). Performance, Quality of Service, and Control of Next-Generation Communication and Sensor Networks III. Vol. 6011. Bibcode:2005SPIE.6011..138H. CiteSeerX 10.1.1.78.5815. doi:10.1117/12.630496. S2CID 8945952.
- ↑Kaminsky, Dan (13 June 2003). "Re: Extensions for long fat networks?". openssh-unix-dev@mindrot.org (Mailing list).
the TCP forwarding code is pretty speedy as well. Just to pre-answer a question, ssh decapsulates and re-encapsulates TCP, so you don't have classic TCP-over-TCP issues.
- ↑"OpenSSH 4.3 Release Notes". openssh.com. 1 February 2006. Retrieved 14 July 2014.
- ↑ "SSHD(8) - Página del manual de Linux" .
- ↑ "Sshd_config(5) - Páginas del manual de OpenBSD" .
- ↑ "Notas de la versión 7.0 de OpenSSH" . OpenSSH . 11 de agosto de 2015. Consultado el 13 de noviembre de 2022 .
- ↑ "Notas de la versión 8.8 de OpenSSH" . OpenSSH . 26 de septiembre de 2021. Consultado el 13 de noviembre de 2022 .
- ↑ "Notas de la versión 5.7 de OpenSSH" . OpenSSH . 24 de enero de 2011. Consultado el 13 de noviembre de 2022 .
- ↑ "Notas de la versión 6.5 de OpenSSH" . OpenSSH . 29 de enero de 2014. Consultado el 13 de noviembre de 2022 .
- ↑ "Notas de la versión 7.2 de OpenSSH" . OpenSSH . 29 de febrero de 2016. Consultado el 13 de noviembre de 2022 .
- ↑ "Notas de la versión 8.2 de OpenSSH" . OpenSSH . 14 de febrero de 2020. Consultado el 13 de noviembre de 2022 .
- ↑ Aviso de seguridad de OpenSSH: Ataque CBC
- ↑ CVE - 2015-6565
- ↑ Vulnerabilidad de OpenSSH PTY
- ↑ Se ha publicado OpenSSH 5.4
- ↑ Thomson, Iain (14 de enero de 2016). "Los servidores OpenSSH maliciosos pueden robar sus claves de inicio de sesión privadas para otros sistemas: aplique el parche ahora" . The Register .
- ↑ Se acaba de lanzar OpenSSH 7.1p2.
- ↑ "El error de regresión" . Qualys . Consultado el 16 de julio de 2024 .
- ↑ "Notas de la versión de OpenSSH" . OpenSSH . Consultado el 16 de julio de 2024 .
- ↑ Ylonen, Tatu (14 de febrero de 2001). "Marcas comerciales de SSH y el nombre del producto OpenSSH" . openssh-unix-dev (Lista de correo). MARC . Consultado el 11 de febrero de 2014 .
- ↑ Miller, Damien (14 de febrero de 2001). "Re: Marcas registradas de SSH y el nombre del producto OpenSSH" . openssh-unix-dev (Lista de correo). MARC . Recuperado el 11 de febrero de 2014 .
- ↑ Lemos, Robert (2 de enero de 2002). "¡Shhh! No uses esa marca registrada" . CNET . Consultado el 19 de mayo de 2016 .
- ↑ Ylonen, Tatu (1 de marzo de 2002). "Ylönen: Somos dueños de la marca registrada ssh, pero aquí hay una propuesta" . NewsForge . Archivado del original el 1 de marzo de 2002. Recuperado el 20 de mayo de 2016 .
Enlaces externos
- Sitio web oficial

- – Manual de comandos generales de OpenBSD
- – Manual del administrador del sistema OpenBSD
- OpenSSH en la Referencia cruzada BSD del superusuario (BXR.SU) OpenGrok
- SSH OpenSSH - Windows CMD - SS64.com
- Comandos de Windows
- Software libre multiplataforma
- Software criptográfico
- Software gratuito relacionado con redes
- Software de seguridad gratuito
- OpenBSD
- Concha segura
- Software libre programado en C
- Clientes del protocolo de transferencia de archivos SSH