FIles transferred over SHell protocol es un protocolo para usar SSH o RSH en la transferencia de ficheros entre máquinas, y para la gestión de ficheros remotos.
La ventaja de FISH es que todo lo que necesita del lado del servidor es una implementación de SSH o RSH, un shell Unix y varias utilidades estándar para Unix como ls, cat o dd. Opcionalmente, también puede estar instalado una aplicación servidora para FISH, que ejecute las órdenes asociadas de forma más rápida que un shell de Unix.
El protocolo fue diseñado por Pavel Machek en 1998 para Midnight Commander.
Mensajes del protocolo
Los clientes envían mensajes según la siguiente forma:
#ORDEN_FISH parámetros... órdenes equivalentes del shell, posiblemente multi-línea
Las órdenes FISH siempre están todas definidas, aunque su equivalente en el shell puede variar. Las órdenes FISH siempre tienen prioridad: se espera que el servidor las ejecute si puede entenderlas, aunque si no puede, es posible que intente ejecutar una orden del shell. En caso de que no haya aplicaciones servidoras especiales, el shell Unix interpreta la orden FISH como un comentario y ejecuta las órdenes del shell equivalentes.
Las respuestas del servidor son multi-línea, pero siempre terminan con la línea
### xyz<optional text>
### es un prefijo para marcar esta línea, y xyz es el código de retorno. Estos código son un superconjunto de aquellos utilizados en el protocolo FTP. Los códigos 000 y 001 son especiales, y su significado depende de la presencia de salida del servidor antes de la última línea.
Inicio de sesión
El cliente inicia la conexión SSH o RSH con echo FISH:;/bin/sh en la máquina remota. Esto debería permitir al servidor distinguir las conexiones FISH de las SSH o RSH habituales.
Las primeras dos órdenes enviadas al servidor son FISH y VER, para negociar el protocolo FISH, su versión y sus extensiones.
#FISH echo; start_fish_server; echo '### 200'
#VER 0.0.2 <feature1> <feature2> <...> echo '### 000'
El servidor puede contestar a la orden VER con líneas como la siguiente, indicando la versión y extensiones soportadas del protocolo FISH:
VER 0.0.0 <feature2> <...> ### 200
Implementaciones
- Midnight Commander
- Lftp
- fish:// KDE kioslave (en cualquier aplicación KDE)
Véase también
- Secure Shell (SSH)
- Secure Shell Filesystem (SSHFS)