El protocolo de archivos transferidos mediante Shell ( FISH ) es un protocolo de red que utiliza Secure Shell (SSH) o Remote Shell (RSH) para transferir archivos entre computadoras y administrar archivos remotos.
La ventaja de FISH es que todo lo que requiere en el lado del servidor es una implementación de SSH o RSH, un shell de Unix y un conjunto de utilidades estándar de Unix (como ls , cat o dd , a diferencia de otros métodos de acceso remoto a archivos a través de un shell remoto, scp por ejemplo, que requiere scp en el lado del servidor). Opcionalmente, puede haber un programa de servidor FISH especial (llamado start_fish_server ) en el servidor, que ejecuta comandos FISH en lugar del shell de Unix y, por lo tanto, acelera las operaciones.
El protocolo fue diseñado por el hacker checo de kernel de Linux, Pavel Machek, en 1998 para la herramienta de software Midnight Commander . [1]
El cliente envía solicitudes de texto del siguiente formato:
Argumentos #FISH_COMMAND...comandos de shell equivalentes,que puede ser de varias líneas
Los comandos fish están todos definidos, los equivalentes del shell pueden variar. Los comandos fish siempre tienen prioridad: se espera que el servidor ejecute un comando fish si lo entiende. Sin embargo, si no lo entiende, puede intentar ejecutar un comando del shell. Cuando no hay un programa de servidor especial, el shell de Unix ignora el comando fish como comentario y ejecuta el o los comandos del shell equivalentes.
Las respuestas del servidor son de varias líneas, pero siempre terminan con
### xyz<texto opcional>
línea. ###
es un prefijo para marcar esta línea, xyz
es el código de retorno. Los códigos de retorno son un superconjunto de los utilizados en FTP . Los códigos 000 y 001 son especiales, su significado depende de la presencia de la salida del servidor antes de la línea final.
El cliente inicia la conexión SSH o RSH con echo FISH:;/bin/sh
el comando que se ejecuta en la máquina remota. Esto debería permitir al servidor distinguir las conexiones FISH de las conexiones RSH o SSH normales.
Los dos primeros comandos enviados al servidor son FISH
y VER
para negociar el protocolo FISH, su versión y extensiones.
#PEZeco; iniciar_servidor_fish; eco '### 200'
#VER 0.0.2 <característica1> <característica2> <...>eco '### 000'
El servidor puede responder al comando VER con líneas como
VER 0.0.0 <característica2> <...>### 200
que indica la versión compatible del protocolo FISH y las extensiones compatibles.