Por qué SSH usa el puerto 22

En nuestro día a día tratamos con ciertos asuntos que damos por sentados y no siempre nos paramos a pensar de dónde vienen. Uno de ellos son los números de puertos empleados por los distintos servicios de Internet.

Los puertos permiten tener distintos servicios usando una sola IP. Son una extensión de 16 bits de la dirección IP que permiten 65536 combinaciones diferentes. Si alguno ha usado alguna vez SSH (el control remoto seguro para sistemas Unix-like), sabrá que las comunicaciones se mueven a través del puerto 22. Pero ¿por qué se eligió ese número?

programas gráficos remotos en raspberry pi
Terminal remoto a través de SSH

Tatu Ylonen, creador de SSH, ha desvelado la razón en una entrada que explica la historia del protocolo:

«Diseñé SSH para reemplazar tanto telnet (puerto 23) como ftp (puerto 21). El puerto 22 estaba libre. Estaba pertinentemente entre los puertos de telnet y ftp. Imaginé que tener ese número de puerto sería una de esas pequeñas cosas que darían algo de credibilidad. Pero ¿cómo podía conseguir ese número? Nunca había pedido uno pero conocía a alguien que sí lo había hecho.

El proceso básico para asignar un puerto era bastante simple en aquella época. Internet era más pequeño y estaba dando sus primero pasos. Los números de puertos eran asignados por la IANA (Internet Assigned Numbers Authority). En aquel momento eran un estimado pionero de Internet llamado Jon Postel y Joyce K. Reynold.  Entre otras cosas, Jon había sido el editor de unos protocolos estándar sin importancia como IP (RFC 791), ICMP (RFC 792) y TCP (RFC 793). Algunos de vosotros habréis oído hablar de ellos.»

gestión de archivos remota en raspberry pi
Transferencia de archivos a través de SSH

A partir de este momento quizás sea interesante mencionar que nos encontramos en 1995, muy poco antes del boom de Internet cuando todavía muy pocos navegaban por la red. Ylonen ha publicado el correo electrónico que envió a la IANA donde explica que ha escrito un programa para revisar los registros de una máquina remotamente y de forma segura. Pide que el puerto esté por debajo de 256 y que si puede ser el 22, mejor que mejor. Al día siguiente, Reynolds le respondió:

«Tatu, hemos asignado el puero 22 a ssh contigo como persona de contacto. Joyce.»

Y así de fácil fue. Dos semanas después, Ylonen publicó SSH 1.0, un servicio que en la actualidad se encuentra de serie en todas las distros Linux y que no solo es capaz de controlar remotamente una consola, sino que puede transferir archivos a través de un canal cifrado e incluso puede mostrar ventanas gráficas remotamente.

pcmanfm por ssh en raspberry pi
Una ventana gráfica remota a través de SSH

Recordemos que la razón por la que FTP tiene asignado el puerto 21 y Telnel el 23 (ambos números impares) es porque el protocolo que hubo antes del TCP (el NCP) usaba números pares para los datos salientes y número impares para los entrantes.

Ver comentarios