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:
| Protocolo | Função principal | Usa SSH | Porta comum |
|---|---|---|---|
| SCP | Copiar arquivos | Sim | 22 |
| SFTP | Gerenciar e transferir arquivos | Sim | 22 |
| FTP | Transferir arquivos sem criptografia | Não | 21 |
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-clientNo Fedora:
sudo dnf install openssh-clientsNo Arch Linux:
sudo pacman -S opensshPara verificar se está instalado:
scp -VOu:
which scpComo configurar o SCP no servidor?
O SCP depende do serviço SSH.
A configuração principal fica no arquivo:
/etc/sshsshd_configPara editar:
sudo nano /etc/ssh/sshd_configVerifique se o SSH está ativo:
sudo systemctl status sshOu em algumas distribuições:
sudo systemctl status sshdDepois de alterar configurações, reinicie o serviço:
sudo systemctl restart sshOu:
sudo systemctl restart sshdComo 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_servidorAgora é 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_configExemplo de bloqueio de login root:
PermitRootLogin noDepois reinicie o SSH:
sudo systemctl restart sshTambém é recomendado criar usuários separados para transferência de arquivos.
Qual porta o SCP usa?
Por padrão, o SCP usa:
22/TCPSe 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
| Protocolo | Segurança | Porta comum | Observação |
|---|---|---|---|
| FTP | Não criptografado | 21 | Antigo e inseguro |
| FTPS | Usa TLS/SSL | 21 ou 990 | FTP com criptografia |
| SFTP | Usa SSH | 22 | Permite gerenciar arquivos |
| SCP | Usa SSH | 22 | Focado em cópia de arquivos |
Erros comuns no SCP
Permission denied
Erro:
Permissin deniedPossí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/pastaAjustar dono:
sudo chown usuario:usuario /caminho/da/pastaAjustar permissões:
sudo chmod 755 /caminho/da/pastaConnection refused
Erro:
Connection refusedPossíveis causas:
Serviço SSH parado.
Porta errada.
Firewall bloqueando.
Servidor fora do ar.
Verificar SSH:
sudo systemctl status sshIniciar SSH:
sudo systemctl start sshVerificar porta:
sudo ss -tulpn | grep sshNo route to host
Erro:
No route to hostPossíveis causas:
IP incorreto.
Servidor desligado.
Problema de rede.
Firewall bloqueando conexão.
Teste:
ping ip_do_servidorOu:
nc -vz ip_do_servidor 22Host key verification failed
Erro:
Host key verification failedPossí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_servidorDepois tente conectar novamente:
scp arquivo.txt usuario@ip_do_servidor:/home/usuario/No such file or directory
Erro:
No such file or directoryPossí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.txtVerifique 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 outPossí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 22Verifique firewall no servidor:
sudo ufw statusLiberar porta SSH no UFW:
sudo ufw allow 22/tcpComo testar se o SCP está funcionando?
Primeiro, teste o SSH:
ssh usuario@ip_do_servidorSe 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 22Comandos principais do SCP
| Comando | Funçã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.txtEnviar para o servidor:
scp arquivo.txt usuario@192.168.0.10:/home/usuario/Acessar o servidor:
ssh usuario@192.168.0.10Verificar se o arquivo chegou:
ls -l /home/usuario/arquivo.txtSair do servidor:
exitBaixar 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.