Linux PC

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

how to use scp command in 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. Isto significa protocolo de cópia segura e transfere arquivos e diretórios entre dois sistemas através de 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 <option> <host_user_name@host_ip_address:path/to/source/file> <target_user_name@target_ip_address:target/path>

Entendendo a sintaxe:

  • Primeiro, <host_user_name@host_ip_address:path/to/source/file> especifica o sistema ‘fonte’ de onde você precisa transferir seus arquivos/diretórios.
  • Segundo, <target_user_name@target_ip_address:target/path> especifica o sistema ‘destino’ 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:

Opções Destino
-P Especifica qual porta conectar com o sistema host. Se omitido, usará a porta 22 por padrão.
-p Preserva tempos de modificação, tempos de acesso e modos do arquivo original quando copiado para o sistema de destino.
-r Copia todo o diretório para o sistema de destino recursivamente.
-J Usado para conectar o sistema de origem e o sistema de destino por meio de um sistema proxy (host de salto).
-3 quando este sinalizador é usado, ele copia os arquivos tanto para o sistema de destino quanto para o sistema local
-4 força o comando scp a usar apenas endereços IPv4.
-6 força o comando scp a usar apenas endereços IPv6.

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 <options> <path_to_local_file> <remote_user>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

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

scp test.txt remote2@139.144.11.105:/home/remote2/Documents/

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.
transferindo um arquivo do sistema local para o receptor remoto - comando scp linux

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 <options> <remote_user>@<remote_host_ip_address>:<path_of_file_to_transfer> <path_to_store_file>

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

scp test@10.10.11.113:/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.
enviando arquivo do servidor remoto para o sistema local - comando scp linux

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.

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 <encryption_algorithm>

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.

gerando a chave ssh e enviando uma cópia para o sistema receptor

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 <destination_username>@<destination_ip_address>

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 <options> <remote_user_1>@<remote_host_ip_address>:<path_of_file_to_transfer> <remote_user_2>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

Transferindo arquivo entre dois sistemas remotos - comando scp linux

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

scp remote1@10.10.11.113:/home/test1/test.txt remote2@10.11.27.111:/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.

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 <path_to_file_1> <path_to_file_2> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

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 remote1@10.10.11.113:/home/remote_1/Documents

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 o nome 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.
Transferindo vários arquivos usando o comando scp

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

scp <wildcard>.<extension> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

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

scp *.py remote1@10.10.11.113:/home/remote_1/

Aqui,

  • *.py significa todos os arquivos python
  • remote1 é o nome de usuário do destinatário
  • 10.10.11.113 é o endereço IP do receptor
  • /home/remote_1/ é o local para armazenar o arquivo recebido
Selecionando vários arquivos com a mesma extensão e transferindo-os

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.

Similar Posts

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *