SCP

O que é SCP?

SCP significa Secure Copy Protocol.

Ele é usado para copiar arquivos entre computadores de forma segura, usando o protocolo SSH.

Com SCP é possível:

Enviar arquivos para um servidor remoto.
Baixar arquivos de um servidor remoto.
Copiar pastas inteiras.
Transferir arquivos entre dois servidores.

Assim como o SFTP, o SCP normalmente usa a porta 22/TCP, pois funciona sobre SSH.


SCP é a mesma coisa que SFTP?

Não.

Os dois usam SSH, mas funcionam de formas diferentes.

O SCP é mais simples e direto, usado principalmente para copiar arquivos.

O SFTP é mais completo, permitindo navegar em pastas, listar arquivos, renomear, apagar e gerenciar arquivos remotamente.

Resumo:

ProtocoloFunção principalUsa SSHPorta comum
SCPCopiar arquivosSim22
SFTPGerenciar e transferir arquivosSim22
FTPTransferir arquivos sem criptografiaNão21

Como o SCP funciona?

O SCP usa uma conexão SSH entre o computador local e o servidor remoto.

Fluxo básico:

O cliente inicia a conexão com o servidor.
O servidor solicita autenticação.
O usuário informa senha ou usa chave SSH.
Após autenticar, o arquivo é copiado com criptografia.
A conexão é encerrada ao final da transferência.

Exemplo básico:

scp arquivo.txt usuario@servidor.com:/home/usuario/

Esse comando envia o arquivo arquivo.txt para o servidor remoto.


Para que o SCP é usado?

O SCP é usado para transferir arquivos de forma rápida e segura.

Exemplos comuns:

Enviar arquivos de configuração para um servidor.
Baixar logs de servidores Linux.
Copiar backups.
Enviar arquivos de sites para hospedagem.
Transferir scripts entre máquinas.
Copiar pastas inteiras para outro servidor.


Como instalar o SCP?

Na maioria dos sistemas Linux, o SCP já vem junto com o OpenSSH Client.

Para instalar no Debian, Ubuntu e derivados:

sudo apt update
sudo apt install openssh-client

No Fedora:

sudo dnf install openssh-clients

No Arch Linux:

sudo pacman -S openssh

Para verificar se está instalado:

scp -V

Ou:

which scp

Como configurar o SCP no servidor?

O SCP depende do serviço SSH.

A configuração principal fica no arquivo:

/etc/sshsshd_config

Para editar:

sudo nano /etc/ssh/sshd_config

Verifique se o SSH está ativo:

sudo systemctl status ssh

Ou em algumas distribuições:

sudo systemctl status sshd

Depois de alterar configurações, reinicie o serviço:

sudo systemctl restart ssh

Ou:

sudo systemctl restart sshd

Como enviar um arquivo com SCP?

Exemplo:

scp arquivo.txt usuario@ip_do_servidor:/home/usuario/

Exemplo real:

scp backup.zip usuario@192.168.0.10:/home/usuario/

Esse comando envia o arquivo backup.zip para a pasta /home/usuario/ no servidor remoto.


Como baixar um arquivo com SCP?

Para baixar um arquivo do servidor para o computador local:

scp usuario@ip_do_servidor:/home/usuario/arquivo.txt .

Exemplo:

scp usuario@192.168.0.10:/var/log/syslog .

O ponto final . significa que o arquivo será salvo na pasta atual.


Como copiar uma pasta com SCP?

Para copiar uma pasta inteira, use a opção -r.

Exemplo:

scp -r minha_pasta usuario@ip_do_servidor:/home/usuario/

Para baixar uma pasta do servidor:

scp -r usuario@ip_do_servidor:/home/usuario/pasta_remota .

Como usar SCP com porta diferente?

Por padrão, o SCP usa a porta 22.

Se o SSH estiver configurado em outra porta, use a opção -P.

Exemplo com porta 2222:

scp -P 2222 arquivo.txt usuario@ip_do_servidor:/home/usuario/

Atenção: no SCP, a opção de porta é -P maiúsculo.


Como usar SCP com chave SSH?

Primeiro, gere uma chave SSH:

ssh-keygen -t ed25519 -C "usuario@servidor"

Depois, copie a chave para o servidor:

ssh-copy-id usuario@ip_do_servidor

Agora é possível usar SCP sem digitar senha, se a chave estiver correta:

scp arquivo.txt usuario@ip_do_servidor:/home/usuario/

Também é possível informar uma chave específica:

scp -i ~/.ssh/minha_chave arquivo.txt usuario@ip_do_servidor:/home/usuario/

Como limitar um usuário para usar SCP?

Como o SCP usa SSH, o controle é feito no servidor SSH.

É possível limitar permissões usando:

Permissões de arquivos e pastas.
Usuários específicos.
Grupos.
Chaves SSH.
Configurações no sshd_config.

Arquivo principal:

/etc/ssh/sshd_config

Exemplo de bloqueio de login root:

PermitRootLogin no

Depois reinicie o SSH:

sudo systemctl restart ssh

Também é recomendado criar usuários separados para transferência de arquivos.


Qual porta o SCP usa?

Por padrão, o SCP usa:

22/TCP

Se o servidor SSH estiver em outra porta, o SCP também usará essa porta.

Exemplo:

scp -P 2222 arquivo.txt usuario@servidor:/home/usuario/

SCP usa TLS ou SSL?

Não.

O SCP usa SSH para criptografar a comunicação.

Ele não usa TLS nem SSL.

Não deve ser confundido com FTPS, que é FTP com TLS/SSL.


Diferença entre SCP, SFTP, FTP e FTPS

ProtocoloSegurançaPorta comumObservação
FTPNão criptografado21Antigo e inseguro
FTPSUsa TLS/SSL21 ou 990FTP com criptografia
SFTPUsa SSH22Permite gerenciar arquivos
SCPUsa SSH22Focado em cópia de arquivos

Erros comuns no SCP

Permission denied

Erro:

Permissin denied

Possíveis causas:

Usuário ou senha incorretos.
Chave SSH errada.
Usuário sem permissão na pasta.
Arquivo sem permissão de leitura.
Pasta de destino sem permissão de escrita.

Verificar permissões:

ls -ld /caminho/da/pasta

Ajustar dono:

sudo chown usuario:usuario /caminho/da/pasta

Ajustar permissões:

sudo chmod 755 /caminho/da/pasta

Connection refused

Erro:

Connection refused

Possíveis causas:

Serviço SSH parado.
Porta errada.
Firewall bloqueando.
Servidor fora do ar.

Verificar SSH:

sudo systemctl status ssh

Iniciar SSH:

sudo systemctl start ssh

Verificar porta:

sudo ss -tulpn | grep ssh

No route to host

Erro:

No route to host

Possíveis causas:

IP incorreto.
Servidor desligado.
Problema de rede.
Firewall bloqueando conexão.

Teste:

ping ip_do_servidor

Ou:

nc -vz ip_do_servidor 22

Host key verification failed

Erro:

Host key verification failed

Possíveis causas:

A chave do servidor mudou.
O IP agora aponta para outro servidor.
Existe registro antigo no arquivo known_hosts.

Solução:

ssh-keygen -R ip_do_servidor

Depois tente conectar novamente:

scp arquivo.txt usuario@ip_do_servidor:/home/usuario/

No such file or directory

Erro:

No such file or directory

Possíveis causas:

Arquivo local não existe.
Caminho remoto está errado.
Pasta de destino não existe.
Nome do arquivo foi digitado incorretamente.

Verifique o arquivo local:

ls -l arquivo.txt

Verifique o caminho remoto:

ssh usuario@ip_do_servidor "ls -ld /caminho/remoto"

Port 22: Connection timed out

Erro:

ssh: connect to host servidor port 22: Connection timed out

Possíveis causas:

Firewall bloqueando a conexão.
Servidor indisponível.
Porta SSH fechada.
Rede sem acesso ao servidor.

Teste a porta:

nc -vz ip_do_servidor 22

Verifique firewall no servidor:

sudo ufw status

Liberar porta SSH no UFW:

sudo ufw allow 22/tcp

Como testar se o SCP está funcionando?

Primeiro, teste o SSH:

ssh usuario@ip_do_servidor

Se o SSH funcionar, o SCP normalmente também funcionará.

Teste enviando um arquivo pequeno:

echo "teste" > teste.txt
scp teste.txt usuario@ip_do_servidor:/home/usuario/

Depois verifique no servidor:

ssh usuario@ip_do_servidor "ls -l /home/usuario/teste.txt"

Também é possível testar a porta:

nc -vz ip_do_servidor 22

Comandos principais do SCP

ComandoFunção
scp arquivo usuario@servidor:/pasta/Envia arquivo para o servidor
scp usuario@servidor:/arquivo .Baixa arquivo do servidor
scp -r pasta usuario@servidor:/pasta/Envia pasta inteira
scp -P 2222 arquivo usuario@servidor:/pasta/Usa porta SSH diferente
scp -i chave arquivo usuario@servidor:/pasta/Usa chave SSH específica
scp -v arquivo usuario@servidor:/pasta/Mostra detalhes da conexão
scp -C arquivo usuario@servidor:/pasta/Usa compressão
scp -l 1000 arquivo usuario@servidor:/pasta/Limita velocidade em Kbit/s

Exemplo completo de uso

Criar um arquivo de teste:

echo "arquivo de teste" > arquivo.txt

Enviar para o servidor:

scp arquivo.txt usuario@192.168.0.10:/home/usuario/

Acessar o servidor:

ssh usuario@192.168.0.10

Verificar se o arquivo chegou:

ls -l /home/usuario/arquivo.txt

Sair do servidor:

exit

Baixar o arquivo novamente:

scp usuario@192.168.0.10:/home/usuario/arquivo.txt .

Boas práticas de segurança

Usar chave SSH em vez de senha.
Desativar login direto do root.
Usar permissões corretas nos arquivos e pastas.
Liberar no firewall apenas as portas necessárias.
Manter o OpenSSH atualizado.
Usar usuários separados para cada finalidade.
Evitar usar SCP com usuário root.
Usar senhas fortes caso senha seja permitida.
Verificar sempre o destino antes de copiar arquivos.
Usar -i para informar uma chave específica quando necessário.

Páginas relacionadas