¿Cuál es la diferencia entre SCP y SFTP?

162

Por lo general, uso el scpcomando para transferir archivos en * nixes.

¿Cuál es la diferencia entre SFTP y SCP? ¿No trabajan ambos en SSH?

nos
fuente

Respuestas:

98

En pocas palabras, SCP solo se puede usar para transferir archivos, y no es interactivo (es decir, todo debe especificarse en la línea de comandos). SFTP es más elaborado y permite que los comandos interactivos hagan cosas como crear directorios, eliminar directorios y archivos (todos sujetos a permisos del sistema, por supuesto), etc.

Alex
fuente
34
Con respecto a la interactividad: la diferencia que describe es sobre clientes SFTP / SCP específicos implementados en OpenSSH. No se trata de los protocolos en sí. Es perfectamente posible implementar un cliente SCP interactivo o un cliente SFTP no interactivo.
Martin Prikryl
44
Una cosa más: scp no funciona si el servidor solo permite el acceso SFTP a través de la línea ForceCommand internal-sftp. Creo que PermitTTY notambién impide el acceso scp pero permite el acceso sftp, aunque podría haber escrito mal mi contraseña cada vez que lo intenté. Pero esas dos cosas no deberían prevenir el sftp. Fuente: experiencia personal.
ecube
¿Puedo suponer que cualquier servidor SFTP también es capaz de aceptar transferencias SCP?
gus
@gus no, mira el comentario de ecube
Pere
104

De Wikipedia :

En comparación con el protocolo SCP anterior, que permite solo transferencias de archivos, el protocolo SFTP permite una variedad de operaciones en archivos remotos; es más como un protocolo de sistema de archivos remoto. Las capacidades adicionales de un cliente SFTP en comparación con un cliente SCP incluyen reanudar transferencias interrumpidas, listados de directorio y eliminación remota de archivos. [1] Por estas razones, es relativamente sencillo implementar un cliente GUI SFTP en comparación con un cliente GUI SCP.

y

Aunque tanto SCP como SFTP utilizan el mismo cifrado SSH durante la transferencia de archivos con el mismo nivel general de sobrecarga, SCP suele ser mucho más rápido que SFTP en la transferencia de archivos, especialmente en redes de alta latencia. Esto sucede porque SCP implementa un algoritmo de transferencia más eficiente, uno que no requiere esperar confirmaciones de paquetes. Esto conduce a una velocidad más rápida, pero a expensas de no poder interrumpir una transferencia, por lo que, a diferencia de SFTP, la transferencia SCP no se puede cancelar sin finalizar la sesión.

Jarvin
fuente
18
"SCP suele ser mucho más rápido que SFTP en la transferencia de archivos".
Micah Bolen
3
"Pero viene a expensas de no poder interrumpir una transferencia". Esa es una compensación bastante importante.
aaaaaa
aaaaaa, "sin terminar la sesión", que no es un gran problema si toda la sesión es para copiar el archivo. Si está copiando muchos archivos, el cliente también puede esperar a que se complete una copia de archivo individual.
Victor Sergienko
9

Desde una perspectiva puramente de línea de comando:

  • scp no tiene un modo interactivo ni puede leer scripts de comandos, eso significa que todo debe escribirse en la línea de comandos.
  • sftp tiene un modo interactivo y puede leer comandos de un archivo.

Otra diferencia importante entre los 2 comandos es que sftp no puede colocar un archivo local en una ubicación remota utilizando una sola línea de comando , aunque puede obtener un archivo remoto, mientras que scp puede hacer ambas cosas .

sftp obtener archivo remoto

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp obtener archivo remoto

scp user@host:/path/to/remote.file [/path/to/local.file]

scp poner archivo remoto

scp /path/to/local.file user@host:[/path/to/remote.file]
Stéphane Ch.
fuente
2
Poner un archivo:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2
3

SSH ( S ecure SH ell) es un protocolo de red criptográfica que permite el inicio de sesión remoto y otros servicios de red para operar de forma segura en una red no segura.

Diferencias: SFTP funciona en modo interactivo (sesión) y SCP funciona en modo no interactivo. Con SFTP podemos acceder al sistema de archivos remoto, es decir, crear, eliminar y enumerar archivos.

Similitudes: tanto SCP ( S ecure C opy P rotocol) como SFTP ( S SH F ile T ransfer P rotocol) son protocolos de red, que admiten la gestión de archivos entre hosts en una red. Ambos usan SSH.

más

Premraj
fuente
2

La mayoría de las diferencias de los dos protocolos ya se han dicho en otras respuestas, y más detalladamente en https://unix.stackexchange.com/q/8707/19088

Otra diferencia, según la documentación de curl , es que el protocolo SCP no es muy portátil y generalmente solo funciona entre sistemas Unix.

Por cierto, curl implementa ambos protocolos y, a diferencia de la implementación predeterminada del cliente OpenSSH SFTP, no es interactiva tanto para SFTP como para SCP.

Y tenga en cuenta que también existe el protocolo FISH , que le permite transferir archivos a través de SSH sin la necesidad de SCP o SFTP. Hasta donde yo sé, FISH no es muy popular, actualmente se implementa en unos pocos administradores de archivos ( Midnight Commander y algunos que están basados ​​en KDE) y Lftp .

Pere
fuente
2
"Otra diferencia, según la documentación de curl, es que el protocolo SCP no es muy portátil y generalmente solo funciona entre sistemas Unix". La ironía de esta parte de su respuesta es que la interfaz gráfica de usuario más popular de SCP se llama WinSCP y, lo adivinó, es un programa de Windows.
brett
1
@brett el cliente más popular es probablemente el scp de OpenSSH, diría que está muy implementado. WinSCP es un cliente SCP / SFTP / etc., pero hoy en día se utiliza principalmente como un cliente (S) FTP: "En junio de 2003 se lanzó la versión 3.0, que introdujo soporte para la alternativa a SCP, el protocolo SFTP. Con el tiempo evolucionó de la alternativa al protocolo principal. A pesar de esto, se conservó el nombre bien establecido "WinSCP". (de Historia de WinSCP: winscp.net/eng/docs/project_history)
Pere