Protocolo de cópia segura - Secure copy protocol

scp
Desenvolvedor (s) O Projeto OpenSSH
Repositório github .com / openssh / openssh-portable /
Escrito em C
Sistema operacional Plataforma cruzada
Modelo Comando
Local na rede Internet www .openssh .com

O protocolo de cópia segura ( SCP ) é um meio de transferir arquivos de computador com segurança entre um host local e um host remoto ou entre dois hosts remotos. É baseado no protocolo Secure Shell (SSH). "SCP" normalmente se refere ao protocolo Secure Copy e ao próprio programa. De acordo com os desenvolvedores do OpenSSH em abril de 2019, o SCP está desatualizado, inflexível e não é prontamente corrigido; eles recomendam o uso de protocolos mais modernos como sftp e rsync para transferência de arquivos.

Protocolo de cópia segura

O SCP é um protocolo de rede , baseado no protocolo BSD RCP , que suporta transferências de arquivos entre hosts em uma rede. O SCP usa Secure Shell (SSH) para transferência de dados e usa os mesmos mecanismos de autenticação, garantindo assim a autenticidade e confidencialidade dos dados em trânsito . Um cliente pode enviar (fazer upload) de arquivos para um servidor, opcionalmente incluindo seus atributos básicos (permissões, carimbos de data / hora). Os clientes também podem solicitar arquivos ou diretórios de um servidor (download). O SCP é executado na porta TCP 22 por padrão. Como o RCP, não existe um RFC que defina as especificações do protocolo.

Função

Normalmente, um cliente inicia uma conexão SSH com o host remoto e solicita que um processo SCP seja iniciado no servidor remoto. O processo SCP remoto pode operar em um dos dois modos:

  • modo de origem, que lê arquivos (geralmente do disco) e os envia de volta ao cliente, ou
  • modo coletor, que aceita os arquivos enviados pelo cliente e os grava (geralmente em disco) no host remoto.

Para a maioria dos clientes SCP, o modo de origem geralmente é acionado com o -fsinalizador (de), enquanto o modo de coletor é acionado com -t(para). Esses sinalizadores são usados ​​internamente e não são documentados fora do código-fonte SCP.

Remoto para modo remoto

No passado, na cópia segura de remoto para remoto, o cliente SCP abre uma conexão SSH com o host de origem e solicita que, por sua vez, abra uma conexão SCP com o destino. (O modo remoto para remoto não suportava a abertura de duas conexões SCP e o uso do cliente de origem como intermediário). É importante observar que o SCP não pode ser usado para copiar remotamente da origem para o destino ao operar no modo de autenticação de senha ou teclado interativo, pois isso revelaria as credenciais de autenticação do servidor de destino para a origem. No entanto, é possível com métodos baseados em chave ou GSSAPI que não requerem entrada do usuário.

Recentemente, o modo remoto para remoto suporta o roteamento de tráfego através do cliente que originou a transferência, mesmo que seja um terceiro para a transferência. Dessa forma, as credenciais de autorização devem residir apenas no cliente de origem, o terceiro.

Problemas ao usar perfis de shell comunicativos

O SCP não espera texto se comunicando com o shell de login do ssh. O texto transmitido devido ao perfil ssh (por exemplo, echo "Bem-vindo" no arquivo .bashrc) é interpretado como uma mensagem de erro e uma linha nula (echo "") faz com que o scp entre em deadlock, aguardando a conclusão da mensagem de erro.

Secure Copy (programa de cópia de arquivo remoto)

O programa SCP é uma ferramenta de software que implementa o protocolo SCP como um daemon de serviço ou cliente. É um programa para realizar cópias seguras.

Talvez o programa SCP mais usado seja o programa de linha de comando OpenSSH scp, que é fornecido na maioria das implementações SSH. O scpprograma é o análogo seguro do rcpcomando. O scpprograma deve fazer parte de todos os servidores SSH que desejam fornecer serviço SCP, como também scpfunciona como servidor SCP.

Algumas implementações SSH fornecem o scp2programa, que usa o protocolo SFTP em vez do SCP, mas fornece a mesma interface de linha de comando que scp. scpé, então, normalmente um link simbólico para scp2.

Sintaxe

Normalmente, uma sintaxe de scpprograma é como a sintaxe de cp(cópia) :

Copiando arquivo local para um host remoto:

scp LocalSourceFile user@remotehost:directory/TargetFile

Copiando o arquivo do host remoto e copiando a pasta do host remoto (com a chave -r):

scp user@remotehost:directory/SourceFile LocalTargetFile
scp -r user@host:directory/SourceFolder LocalTargetFolder

Observe que, se o host remoto usar uma porta diferente da padrão 22, ela pode ser especificada no comando. Por exemplo, copiando um arquivo do host:

scp -P 2222 user@host:directory/SourceFile TargetFile

Outros clientes

Como o Secure Copy Protocol implementa apenas transferências de arquivos, os clientes GUI SCP são raros, pois sua implementação requer funcionalidade adicional ( lista de diretórios, pelo menos). Por exemplo, o padrão WinSCP é o protocolo SFTP. Mesmo quando operando no modo SCP, clientes como o WinSCP geralmente não são clientes SCP puros, pois devem usar outros meios para implementar a funcionalidade adicional (como o lscomando ). Isso, por sua vez, traz problemas de dependência de plataforma.

Ferramentas mais abrangentes para gerenciar arquivos sobre SSH são clientes SFTP .

Segurança

Em 2019, a vulnerabilidade CVE - 2019-6111 foi anunciada relacionada à ferramenta e protocolo SCP openssh , permitindo aos usuários sobrescrever arquivos arbitrários no diretório de destino do cliente SCP.

Veja também

Referências