Resumen

  • OpenSSH 8.7 incorporó en 2021 un modo SFTP experimental para scp; OpenSSH 9.0 lo hizo predeterminado el 8 de abril de 2022.
  • Las notas de 9.0 explican la factura de compatibilidad: el SCP/RCP antiguo expandía comodines mediante el shell remoto y podía exigir comillas dobles. -O dejó disponible el camino anterior.

La estrella viajaba a otro intérprete

scp servidor:*.txt . parece una orden sencilla. En el modo tradicional, el shell de la máquina remota expandía el asterisco. Las notas oficiales de 9.0 señalan que los caracteres especiales dentro de un nombre podían requerir dos capas de comillas para atravesar tanto la interpretación local como la remota. El usuario escribía un nombre de archivo; el servidor podía leer parte de su puntuación como sintaxis del shell. La aparente sencillez de scp escondía a un intérprete adicional.

SFTP no cambió el hecho de que la transferencia discurría por una conexión SSH. El manual actual de scp(1) lo dice expresamente. Cambió el protocolo que conversa sobre archivos y la manera de tratar rutas remotas. Una conexión cifrada puede transportar distintas reglas de transferencia; confundir ambas capas borra la razón histórica del cambio.

Primero se abrió una vía de ensayo

La versión 8.7, publicada en 2021, añadió scp -s para experimentar con SFTP. Lo justificó por un manejo más predecible de nombres y por evitar la expansión de patrones mediante el shell remoto. También hizo que las copias entre dos servidores remotos pasaran por la máquina local de forma predeterminada. Así se evitaba exponer credenciales en el primer servidor y someter el nombre a tres shells: el local, el de origen y el de destino. El proyecto estaba cambiando un recorrido, no pintando una nueva etiqueta de seguridad.

Con OpenSSH 9.0 en abril de 2022, la vía de ensayo se convirtió en la habitual. Las comillas dobles que un guion había acumulado para contentar al viejo shell podían estorbar en modo SFTP. OpenSSH consideró una ventaja eliminar aquella obligación y no quiso copiar su comportamiento peculiar en la nueva ruta. A veces el precio de dejar atrás una rareza es que los arreglos antiguos dejen de funcionar.

El prefijo ~user/ añadió un segundo obstáculo. SFTP no tiene una expansión nativa del directorio personal de otro usuario. OpenSSH 8.7 incorporó una extensión del servidor para expandir rutas, pero un servidor SFTP viejo podía carecer de ella. La actualización del cliente no instala una capacidad en la otra orilla.

Quedó scp -O. El manual vigente lo reserva para servidores sin SFTP, algunos patrones de nombres y la expansión de ~ en servidores antiguos. Recuperar el protocolo anterior también recupera la interpretación por el shell remoto. No es un puente gratuito: lleva sus barandillas viejas.

Un comando no define toda la interfaz

El manual de OpenBSD 7.3 ya describe scp sobre SFTP y SSH; el manual actual fecha el valor predeterminado en OpenSSH 9.0. El nombre de la herramienta sobrevivió a un cambio de conversación interna. Lo que decidió cada transferencia fue la combinación de cliente, servidor, ruta y guion. Un anuncio de versión podía mover el tráfico normal. No podía reescribir cada línea de comandos archivada en otro lugar.

La ironía es doméstica: la ventanilla de siempre entrega el paquete a una cinta nueva. Si una etiqueta se redactó para la cinta antigua, la primera señal no aparece en el titular del lanzamiento. Aparece cuando el paquete no sale.