Respostas:
Em poucas palavras, o SCP pode ser usado apenas para transferir arquivos e não é interativo (ou seja, tudo precisa ser especificado na linha de comando). O SFTP é mais elaborado e permite que comandos interativos façam coisas como criar diretórios, excluir diretórios e arquivos (todos sujeitos a permissões do sistema, é claro), etc.
ForceCommand internal-sftp
. Eu acho que PermitTTY no
também evita o acesso scp, mas permite o acesso sftp, embora eu pudesse digitar minha senha incorretamente toda vez que tentei. Mas essas duas coisas não devem impedir o sftp. Fonte: experiência pessoal.
Da Wikipedia :
Comparado ao protocolo SCP anterior, que permite apenas transferências de arquivos, o protocolo SFTP permite uma série de operações em arquivos remotos - é mais como um protocolo de sistema de arquivos remoto. Os recursos extras de um cliente SFTP em comparação com um cliente SCP incluem a retomada de transferências interrompidas, listagens de diretório e remoção remota de arquivos. [1] Por esses motivos, é relativamente simples implementar um cliente SFTP da GUI em comparação com um cliente SCP da GUI.
e
Embora o SCP e o SFTP utilizem a mesma criptografia SSH durante a transferência de arquivos com o mesmo nível geral de sobrecarga, o SCP geralmente é muito mais rápido que o SFTP na transferência de arquivos, especialmente em redes de alta latência. Isso acontece porque o SCP implementa um algoritmo de transferência mais eficiente, que não exige a espera de confirmações de pacotes. Isso leva a uma velocidade mais rápida, mas ocorre às custas de não poder interromper uma transferência; portanto, diferentemente do SFTP, a transferência SCP não pode ser cancelada sem o término da sessão.
De uma perspectiva puramente de linha de comando:
Outra diferença importante entre os 2 comandos é que o sftp não pode colocar um arquivo local em um local remoto usando uma única linha de comando , embora possa obter um arquivo remoto, enquanto o scp pode fazer as duas coisas .
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) é um protocolo de rede de criptografia para permitir a autenticação remoto e outros serviços de rede para operar de forma segura através de uma rede não segura.
Diferenças: o SFTP funciona no modo interativo (sessão) e o SCP funciona no não interativo. Usando o SFTP, podemos acessar o sistema de arquivos remoto, isto é, criar, excluir e listar arquivos.
Semelhanças: Ambos SCP ( S ecure C opy P rotocolo) e SFTP ( S SH F ile t ransferência P rotocolo) são protocolos de rede, que suporta a gestão de arquivo de entre hospedeiros em uma rede. Ambos usam SSH.
A maioria das diferenças dos dois protocolos já foi dita em outras respostas, e mais detalhadamente em https://unix.stackexchange.com/q/8707/19088
Outra diferença, de acordo com a documentação do curl , é que o protocolo SCP não é muito portátil e geralmente funciona apenas entre sistemas Unix.
A propósito, o curl implementa ambos os protocolos e, ao contrário da implementação padrão do cliente OpenSSH SFTP, é não interativo para SFTP e SCP.
E observe que também existe o protocolo FISH , que permite transferir arquivos via SSH sem a necessidade de SCP ou SFTP. Até onde eu sei, o FISH não é muito popular, atualmente implementado em apenas alguns gerenciadores de arquivos ( Midnight Commander e alguns baseados no KDE) e no Lftp .