Como usar o comando scp para transferir arquivos com segurança no Linux

Suponha que você queira transferir alguns arquivos entre servidores em um sistema Linux. Existem muitas maneiras de realizar a tarefa, mas se sua prioridade for transferir arquivos com segurança, você terá algumas opções. A solução mais fácil é usar o comando scp ou Secure Copy para transferir seus arquivos sem se preocupar com a segurança. Neste artigo, explicaremos como usar arquivos de transferência com segurança usando o comando scp em seu sistema Linux.

Transferir arquivos com o comando scp no Linux (2023)

O que é o comando scp no Linux

Quando se trata de transferir arquivos por uma rede segura, o comando scp pode ser muito útil. Significa Secure Copy Protocol e transfere arquivos e diretórios entre dois sistemas através da conexão SSH (Secure Shell). Com o ssh, você pode ter certeza da segurança de seus arquivos, pois eles são criptografados por padrão. Em termos mais simples, o comando scp é uma versão mais segura do comando cp, sobre o qual você pode ler tudo em nosso artigo de comandos do Terminal Linux.

Como usar o comando scp: sintaxe e opções

Antes de podermos transferir arquivos via scp, vamos ver a sintaxe e as opções do comando aqui:

scp <[email protected]_ip_address:caminho/para/origem/arquivo> <[email protected]_ip_address:alvo/caminho>

Entendendo a sintaxe:

  • Primeiro, <[email protected]_ip_address:path/to/source/file> especifica o sistema ‘source’ de onde você precisa transferir seus arquivos/diretórios.
  • Segundo, <[email protected]_ip_address:target/path> especifica o sistema ‘target’ para o qual você deseja transferir seus arquivos/diretórios.

Se você deixar qualquer um dos parâmetros acima, o comando scp no Linux primeiro procurará o arquivo e depois copiará o arquivo localmente. Algumas das opções para emparelhar com o comando são:

OptionsDestination-PSespecifica qual porta conectar com o sistema host. Se omitido, usará a porta 22 por padrão.-pPreserva tempos de modificação, tempos de acesso e modos do arquivo original quando copiado para o sistema de destino.-rCopia todo o diretório para o sistema de destino recursivamente.-JUsado para conectar o sistema de origem e sistema de destino por meio de um sistema proxy (jump host).-3quando esse sinalizador é usado, ele copia os arquivos tanto para o sistema de destino quanto para o sistema local-4força o comando scp a usar apenas endereços IPv4.-6força o scp para usar apenas endereços IPv6.

  Como instalar o equalizador de áudio PulseEffects no Linux

Como copiar arquivos usando o comando scp

Antes de usar o comando scp no Linux, há alguns pré-requisitos que você precisa cumprir nos sistemas host e de destino:

  • ssh deve ser instalado
  • acesso root ou qualquer usuário com privilégios sudo

Copiar arquivos do host local para o destino remoto

Se você tiver um arquivo que precisa transferir de seu sistema local para um destino remoto, precisará usar a seguinte sintaxe:

scp @:

Se a sintaxe acima pode parecer complicada, um exemplo irá esclarecê-la:

scp test.txt [email protected]:/home/remote2/Documentos/

No exemplo acima:

  • test.txt é o nome do arquivo a ser transferido e está localizado no diretório atual do sistema local.
  • test é o nome de usuário no sistema de destino.
  • 139.144.11.105 é o endereço IP do sistema de destino.
  • /home/remote2/Documents/ é o local no sistema de destino onde o arquivo transferido será salvo.

Copiar arquivos do host remoto para o destino local

Se você precisar transferir um arquivo de um host remoto para sua máquina local, use a seguinte sintaxe de comando scp em seu sistema Linux:

scp @:

Por exemplo, digamos que você precise transferir um arquivo chamado test.py do servidor remoto em que está trabalhando, use este comando:

scp [email protected]:/home/test/test1.py ~/test1.py

Neste exemplo:

  • test é o nome de usuário do host remoto.
  • 10.10.11.113 é o endereço IP do host remoto.
  • /home/test/test1.py é o caminho do arquivo a ser transferido do host remoto.
  • ~/test1.py é o nome do arquivo após ser transferido para a máquina local e armazenado no diretório inicial.

Transferir arquivos de um host remoto para outro destino remoto

Com o comando scp, você pode não apenas transferir arquivos entre seu sistema local e uma máquina remota, mas também transferir arquivos entre dois sistemas remotos. Porém, antes de transferir arquivos de um sistema remoto para outro, é recomendável gerar uma chave ssh privada e uma chave ssh pública no sistema de origem e armazenar uma cópia da chave pública no sistema de destino.

  Como criar um volume LVM básico no Linux

Geralmente, os usuários reclamam do erro “Falha na verificação da chave do host” ao transferir arquivos entre dois sistemas remotos. Para ignorar o erro, use uma chave ssh como medida adicional. Nós explicamos como você pode fazer isso aqui:

1. Gere um par de chaves pública/privada no servidor de origem com este comando:

ssh-keygen -t

2. Para algoritmos de criptografia, você pode usar “rsa”, que é o algoritmo mais comumente usado ou qualquer outro algoritmo de sua escolha.

3. Em seguida, você será solicitado a escolher o local para armazenar a chave ssh. Você pode armazená-lo em qualquer local de sua escolha ou no local padrão.

4. Para a senha, você pode inserir qualquer coisa de sua escolha ou deixá-la em branco pressionando Enter.

5. Em seguida, copie a chave pública para o servidor de destino usando o comando abaixo. Com isso, você pode até fazer login no sistema de destino sem uma senha usando ssh.

ssh-copy-id @

Observação: o método de login sem senha funcionará apenas para o usuário para o qual você gerou a chave ssh.

6. Depois de criar e armazenar a chave ssh no servidor remoto, use esta sintaxe de comando scp para trocar arquivos entre dois sistemas remotos executando Linux:

scp @: @:

Digamos que você precise transferir um arquivo chamado test.txt de um host remoto para outro receptor remoto, use o comando:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

Neste exemplo:

  • remote1 é o nome do usuário no host do remetente remoto
  • 10.10.11.113 é o endereço IP do host do remetente remoto
  • /home/test1/test.txt é o caminho para o arquivo a ser enviado
  • remote2 é o nome do usuário no alvo do receptor remoto
  • 10.11.27.111 é o endereço IP do alvo do receptor remoto
  • /home/remote2/Documents/test1.txt é o nome e o caminho a ser salvo para o arquivo a ser recebido.
  Como instalar o software do repositório de usuários do Arch Linux

Transferir vários arquivos usando o comando scp

Transferir vários arquivos um por um pode ser uma tarefa tediosa para qualquer pessoa. Em vez disso, você pode usar a sintaxe abaixo para trocar arquivos usando o comando scp no Linux:

scp @:

Por exemplo – Suponha que você precise enviar quatro arquivos, incluindo test1.txt, test2.py, test3.sh e test4.c, para um receptor remoto, você pode usar o comando abaixo:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/casa/remote_1/Documentos

Vamos entender como funciona o comando do exemplo e o que ele faz:

  • -p 2222 é usado para especificar a conexão via porta 22
  • test1.txt test2.py test3.sh test4.c são os nomes dos arquivos a serem transferidos
  • remote_1 é o nome de usuário do sistema receptor
  • 10.10.11.113 é o endereço IP do receptor
  • /home/remote_1/Documents refere-se ao caminho para armazenar o arquivo recebido.

Você pode até usar curingas para enviar vários arquivos com a mesma extensão conforme mostrado abaixo:

scp . @:

Por exemplo, se você precisar enviar todos os arquivos .py para um servidor remoto, use o comando scp abaixo no Terminal Linux:

scp *.py [email protected]:/casa/remoto_1/

Aqui,

  • *.py significa todos os arquivos python
  • remote1 é o nome de usuário do receptor
  • 10.10.11.113 é o endereço IP do receptor
  • /home/remote_1/ é o local para armazenar o arquivo recebido

perguntas frequentes

A transferência de arquivos SCP é segura?

O Secure Copy Protocol ou scp é um protocolo baseado na tecnologia SSH e usa criptografia e autenticação para a troca de arquivos entre dois hosts. Isso garante total segurança e integridade dos dados entre os dois hosts.

O SCP é mais seguro que o SFTP?

Os protocolos SCP e SFTP estão no mesmo nível em termos de segurança. A principal vantagem de usar scp sobre SFTP são as velocidades de transferência rápidas, especialmente úteis em redes de alta latência.

Transferir arquivos com segurança usando o comando scp no Linux

Em algum momento, todo usuário precisa trocar alguns arquivos pela rede. O comando scp facilita a transferência de arquivos com segurança e eficiência, mesmo em uma rede de alta latência. Certamente, conhecer as várias opções e sintaxe do scp também pode ser útil. Você também pode consultar nossos guias sobre como renomear um arquivo no Linux e como excluir um arquivo no Linux para melhorar ainda mais suas habilidades de gerenciamento de arquivos no sistema operacional. Esperamos que este artigo tenha ajudado você a aprender como usar o comando scp para transferir arquivos em computadores Linux. Se você enfrentar algum problema ao usar o comando, informe-nos na seção de comentários.