# OpenSSH

OpenSSH (també conegut com a OpenBSD Secure Shell) és un conjunt d'utilitats de xarxes segures basades en el protocol Secure Shell (SSH), que proporciona un canal segur sobre una xarxa no segura en una arquitectura client-servidor.
OpenSSH va començar com una bifurcació del programa SSH gratuït desenvolupat per Tatu Ylönen; les versions posteriors de l'SSH d'Ylönen eren programari propietari ofert per SSH Communications Security. OpenSSH es va llançar per primera vegada l'any 1999 i actualment es desenvolupa com a part del sistema operatiu OpenBSD.
OpenSSH no és un únic programa informàtic, sinó un conjunt de programes que serveixen com a alternatives a protocols no xifrats com Telnet i FTP. OpenSSH està integrat en diversos sistemes operatius, és a dir, Microsoft Windows, macOS i la majoria de sistemes operatius Linux, mentre que la versió portàtil està disponible com a paquet en altres sistemes.

## Història

OpenBSD Secure Shell va ser creat pels desenvolupadors d'OpenBSD com una alternativa al programari SSH original de Tatu Ylönen, que ara és programari propietari. Tot i que el codi font està disponible per a l'SSH original, s'imposen diverses restriccions al seu ús i distribució. OpenSSH va ser creat com una bifurcació de l'OSSH de Björn Grönvall que en si mateix era una bifurcació de la versió original SSH 1.2.12 de Tatu Ylönen, que era l'última amb una llicència adequada per a la bifurcació. Els desenvolupadors d'OpenSSH afirmen que la seva aplicació és més segura que l'original, a causa de la seva política de producció de codi net i auditat i perquè es publica sota la llicència BSD, la llicència de codi obert a la qual es refereix la paraula oberta en el nom.
OpenSSH va aparèixer per primera vegada a OpenBSD 2.6. El primer llançament portàtil es va fer l'octubre de 1999. Els desenvolupaments des de llavors han inclòs l'addició de xifratge (per exemple, ChaCha20-Poly1305 a la versió 6.5 de gener de 2014), reduint la dependència d'OpenSSL (6.7, octubre de 2014) i una extensió per facilitar el descobriment i la rotació de claus públiques. per a amfitrions de confiança (per a la transició de les claus d'amfitrió públiques de DSA a Ed25519, versió 6.8 de març de 2015).
El 19 d'octubre de 2015, Microsoft va anunciar que OpenSSH serà compatible de manera nativa a Microsoft Windows i s'hi podrà accedir mitjançant PowerShell, llançant una implementació primerenca i fent que el codi estigui disponible públicament. Els programes de client i servidor basats en OpenSSH s'han inclòs a Windows 10 des de la versió 1803. El client SSH i l'agent de claus estan activats i disponibles de manera predeterminada, i el servidor SSH és una característica a demanda opcional.
A l'octubre de 2019, a OpenSSH 8.1 es va afegir protecció per a les claus privades en repòs a la memòria RAM contra l'especulació i els atacs de canals laterals de memòria.

## Desenvolupament

OpenSSH es desenvolupa com a part del sistema operatiu OpenBSD. En lloc d'incloure canvis per a altres sistemes operatius directament a OpenSSH, l'equip de portabilitat d'OpenSSH manté una infraestructura de portabilitat separada i es fan "alliberaments portàtils" periòdicament. Aquesta infraestructura és substancial, en part perquè cal OpenSSH per realitzar l'autenticació, una capacitat que té moltes implementacions diferents. Aquest model també s'utilitza per a altres projectes OpenBSD com OpenNTPD.
El servidor OpenSSH pot autenticar usuaris utilitzant els mètodes estàndard que admet el protocol SSH: amb una contrasenya; autenticació de clau pública, utilitzant claus per usuari; autenticació basada en host, que és una versió segura derloginrelacions de confiança amb l'amfitrió utilitzant claus públiques; teclat interactiu, un mecanisme genèric de repte-resposta, que s'utilitza sovint per a l'autenticació de contrasenyes senzilles, però que també pot fer ús d'autenticadors més forts com ara fitxes; i Kerberos/GSSAPI. El servidor fa ús de mètodes d'autenticació natius del sistema operatiu amfitrió; això pot incloure l'ús del sistema d'autenticació BSD o mòduls d'autenticació connectables (PAM) per habilitar l'autenticació addicional mitjançant mètodes com ara contrasenyes d'un sol ús. Tanmateix, això ocasionalment té efectes secundaris: quan s'utilitza PAM amb OpenSSH, s'ha d'executar com a root, ja que normalment calen privilegis de root per operar PAM. Les versions d'OpenSSH posteriors a la 3.7 (16 de setembre de 2003) permeten desactivar PAM en temps d'execució, de manera que els usuaris habituals poden executar instàncies sshd.
A OpenBSD, OpenSSH utilitza un programa dedicatsshdL'usuari per defecte elimina els privilegis i realitza la separació de privilegis d'acord amb el principi de privilegis mínims, aplicat a tot el sistema operatiu, inclòs el servidor Xenocara X.

## Característiques

OpenSSH inclou la possibilitat de configurar un canal segur a través del qual les dades enviades a sockets de domini Unix locals del costat del client o ports TCP locals del costat del client es poden " enviar " (enviades a través del canal segur) per a l'encaminament al costat del servidor; quan es configura aquest reenviament, se li indica al servidor que enviï les dades reenviades a algun sòcol o host/port TCP (l'amfitrió podria ser el propi servidor, "localhost"; o, l'amfitrió pot ser un altre ordinador, de manera que mostra a l'altre ordinador que el servidor és l'origen de les dades). L'enviament de dades és bidireccional, el que significa que qualsevol comunicació de retorn es reenvia al costat del client de la mateixa manera; això es coneix com a "túnel SSH", i es pot utilitzar per multiplexar connexions TCP addicionals a través d'una única connexió SSH des del 2004, per ocultar connexions, per xifrar protocols que d'altra manera no estarien segurs i per eludir els tallafocs mitjançant l'enviament/recepció de tot tipus de dades a través d'un port que permet el tallafoc. Per exemple, un túnel del sistema X Window es pot crear automàticament quan s'utilitza OpenSSH per connectar-se a un host remot, i altres protocols, com HTTP i VNC, es poden reenviar fàcilment.
Tunnelitzar una càrrega útil que encapsula TCP (com PPP) a través d'una connexió basada en TCP (com el reenviament de ports de SSH) es coneix com "TCP-over-TCP", i fer-ho pot induir una pèrdua dramàtica en el rendiment de la transmissió (un problema conegut). com a "TCP meltdown"), és per això que el programari de xarxa privada virtual pot utilitzar per a la connexió del túnel un protocol més senzill que TCP. Tanmateix, això sovint no és un problema quan s'utilitza el reenviament de ports d'OpenSSH, perquè molts casos d'ús no impliquen un túnel TCP sobre TCP; la fusió s'evita perquè el client OpenSSH processa la connexió TCP local del costat del client per tal d'arribar a la càrrega útil real que s'està enviant, i després envia aquesta càrrega directament a través de la connexió TCP del túnel al costat del servidor, on l'OpenSSH De manera similar, el servidor "desembolica" la càrrega útil per "embolicar-la" de nou per a l'encaminament a la seva destinació final.
A més, alguns programes de tercers inclouen suport per a tunelització mitjançant SSH. Aquests inclouen DistCC, CVS, rsync i Fetchmail. En alguns sistemes operatius, els sistemes de fitxers remots es poden muntar sobre SSH mitjançant eines com ara sshfs (utilitzant FUSE).
Es pot crear un servidor intermediari SOCKS ad hoc mitjançant OpenSSH. Això permet un proxy més flexible del que és possible amb el reenviament de ports normal.
A partir de la versió 4.3, OpenSSH implementa una VPN basada en tun de capa OSI 2/3. Aquesta és la més flexible de les capacitats de túnel d'OpenSSH, que permet a les aplicacions accedir de manera transparent als recursos de xarxa remots sense modificacions per fer ús de SOCKS.

## Referències

* ↑ Venkatachalam, Girish Linux Journal, 156, 4-2007, pàg. 74–77.
* ↑ «dragonfly.git/blob - crypto/openssh/README» (en anglès). gitweb.dragonflybsd.org. [Consulta: 19 maig 2016].
* ↑ «src/crypto/external/bsd/openssh/dist/README - view - 1.4» (en anglès). NetBSD CVS Repositories. [Consulta: 19 maig 2016].
* ↑ «openssh» (en anglès). OpenSUSE. [Consulta: 17 maig 2016].
* ↑ «Debian -- Details of package openssh-client in jessie» (en anglès). Debian. [Consulta: 17 maig 2016].
* ↑ «Arch Linux - openssh 7.2p2-1 (x86_64)» (en anglès). Arch Linux. [Consulta: 17 maig 2016].
* ↑ «Project History and Credits» (en anglès). OpenBSD. [Consulta: 8 abril 2008].
* ↑ «OpenSSH: Project History and Credits» (en anglès). openssh.com, 22-12-2004. [Consulta: 27 febrer 2014].
* ↑ «Portable OpenSSH – Freecode» (en anglès). Freshmeat.net. [Consulta: 11 febrer 2014].
* ↑ Murenin, Constantine A. «OpenSSH Has a New Cipher — Chacha20-poly1305 — from D.J. Bernstein» (en anglès). Slashdot, 11-12-2013. [Consulta: 26 desembre 2014].
* ↑ Murenin, Constantine A. «OpenSSH No Longer Has To Depend On OpenSSL» (en anglès). Slashdot, 30-04-2014. [Consulta: 26 desembre 2014].
* ↑ Murenin, Constantine A. «OpenSSH Will Feature Key Discovery and Rotation For Easier Switching To Ed25519» (en anglès). Slashdot, 01-02-2015. [Consulta: 1r febrer 2015].
* ↑ «OpenSSH for Windows Update» (en anglès), 19-10-2015. [Consulta: 23 octubre 2015].
* ↑ Durr, Yosef. «What's new for the Command Line in Windows 10 version 1803» (en anglès). Windows Command Line Tools For Developers, 07-03-2018.
* ↑ «Protection for private keys at rest in RAM» (en anglès).
* ↑ «OpenBSD manual pages: SSH» (en anglès). openbsd.org, 03-07-2014. [Consulta: 14 juliol 2014].
* ↑ «OpenSSH Release Notes» (en anglès).
* ↑ «Features» (en anglès). OpenSSH. [Consulta: 26 juny 2016].
* ↑ Titz, Olaf. «Why TCP Over TCP Is A Bad Idea» (en anglès), 23-04-2001. [Consulta: 17 octubre 2015].
* ↑ «OpenSSH 4.3 Release Notes» (en anglès). openssh.com, 01-02-2006. [Consulta: 14 juliol 2014].