Respuestas:
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.
ForceCommand internal-sftp
. Creo que PermitTTY no
tambié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.
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.
Desde una perspectiva puramente de línea de comando:
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 user@host:/path/to/remote.file [/path/to/local.file]
scp user@host:/path/to/remote.file [/path/to/local.file]
scp /path/to/local.file user@host:[/path/to/remote.file]
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
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.
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 .