Já precisou transferir arquivos do seu computador para o servidor com segurança ?
Com o comando sftp é possível de forma segura e prática transferir arquivos entre computadores ou servidores.
O comando sftp combina a simplicidade do FTP com a proteção do SSH, garantindo criptografia em todas as etapas do processo.
Neste guia prático, você vai aprender como usar o comando sftp, desde conectar a um servidor até fazer upload e download de arquivos. Tudo de forma clara, objetiva e com exemplos aplicáveis.
Vantagens do comando SFTP para transferência de arquivos
Quando arquivos são transferidos pela rede de computadores, especialmente pela internet, é necessário ter cuidados com a segurança e também ter sistemas versáteis.
- Ao transferir arquivos com o comando sftp, você utiliza um canal criptografado, protegendo seus dados contra interceptações. Isso é especialmente importante ao lidar com informações sensíveis.
- O comando sftp permite navegar e executar comandos no host remoto.
- No prompt do programa sftp é possível executar comandos no cliente também com total segurança.
Preparando o ambiente
Antes de colocar a mão na massa, você precisará ter o comando sftp instalado em seu sistema linux e obviamente ter o ssh configurado e em execução.
Para ter o comando no cliente linux é necessário instalar instalar o pacote OpenSSH Clients.
Instalar cliente ssh
Para instalar o pacote OpenSSH Clients na distribuição linux debian ou ubuntu execute os comandos abaixo logado como root:
apt update
apt install openssh-client -ySe quer transferir arquivos de um computador ou servidor que tem instalado o RHEL ou AlmaLinux ou Rocky Linux, instale o pacote openssh-clients:
dnf install openssh-clients -yInstalar ssh no servidor
No servidor o SSH já é instalado na maioria das vezes durante a instalação do sistema operacional. Mas caso não esteja no servidor, precisará instalar o pacote OpenSSH Server no computador ou servidor que será o destino dos arquivos transferidos.
Para instalar o pacote OpenSSH Server na distribuição linux debian ou ubuntu execute o comando abaixo logado como root:
apt update
apt install openssh-server -yPara instalar o OpenSSH Server na distribuição linux Red Hat Enterprise Linux ou em distribuições linux baseadas na red hat, instale o pacote openssh-server:
dnf install openssh-server -yPor padrão a função sftp é habilitada quando o OpenSSH Server é instalado, se não tiver habilitada, descomente a linha que tem “Subsystem sftp“, no ubuntu server a configuração do arquivo /etc/ssh/sshd_config é a seguinte:
Subsystem sftp /usr/lib/openssh/sftp-serverApós habilitar essa configuração é necessário reiniciar o SSH no servidor executando o comando:
systemctl restart ssh.serviceO que é SFTP ?
O SFTP (Secure File Transfer Protocol)é um Protocolo de transferência de arquivos seguro, é seguro por que usa o sistema de criptografia do ssh.
Já o comando o sftp no linux é um programa executado na linha de comando que usa o protocolo SFTP para acessar, transferir arquivos e gerenciar o servidor remoto através de uma conexão ssh.
você pode usar esse comando sftp para transferir arquivos e também executar comandos no sistema remoto, semelhante ao comando ftp, executando todas as operações em um transporte criptografado pelo ssh.
Para saber como usar o comando sftp no linux primeiro precisa entender sua sintaxe. A sintaxe para se conectar ao sistema remoto é:
sftp USER@HOST:PATHsftp – É o comando executado no cliente que conectar-se ao servidor remoto.
USER – Nome da conta de usuário do sistema remoto usado para se autenticar pelo ssh.
HOST – Endereço IP do sistema remoto.
PATH – Localização completa do diretório do servidor que será acessado após autenticação.
Conectando-se ao servidor usando o comando sftp
Para demonstrar os exemplos a seguir, vou conectar ao servidor que tem o endereço IP 192.168.0.39 e após se autenticar acessar o diretório /etc o comando completo é sftp [email protected]:/etc
sftp [email protected]:/etc
A partir desse momento você está acessando o sistema do servidor e esse sftp> que você vê no inicio de cada linha é o indicativo do prompt de comando do sftp. E tudo que digitar é um comando interno do comando sftp.
Para acessar o servidor sem alterar para um diretório especifico digite o mesmo comando sem informar o diretório remoto. o comando sfp vai alterar para o diretório home da conta usuário que usou para se autenticar.
sftp [email protected]Muitos servidores na internet trocam a porta padrão do ssh que é a 22. Caso precise conectar-se a um servidor que está aceitando conexões em uma porta diferente da 22 use a opção -P.
Se o ssh do servidor remoto com IP 10.234.55.200 que está tentando acessar usar a porta 2222 por exemplo, o comando completo para acessar é:
sftp -P 2222 [email protected]Navegando no servidor remoto
Para saber em qual diretório está sendo acessado no servidor, execute o comando pwd:
sftp> pwdAlterne entre os diretórios do servidor remoto com o comando cd. O exemplo a seguir está instruindo para sair do diretório corrente(/etc) para o diretório /usr do servidor remoto:
sftp> cd /usr
Você pode visualizar o conteúdo do diretório atual do sistema remoto com comando ls:
sftp> ls
Gerenciando arquivos e diretórios com o comando sftp
Caso precise, você também pode criar e remover diretórios no host remoto usando o prompt do comando sftp. É importante informar que conta de usuário que está usando precisa ter permissões para executar a tarefa.
Para criar um diretório execute o comando mkdir seguido da localização do diretório, o exemplo abaixo cria um diretório APP na localização /tmp:
sftp> mkdir /tmp/APPO comando SFTP só pode excluir diretórios vazios. Se o diretório contiver arquivos ou subdiretórios, você precisará excluir os arquivos usando o comando rm, os subdiretórios vazios com o comando rmdir, para então remover o diretório que deseja.
Caso precise remover um diretório vazio, você precisa executar o comando rmdir e obviamente ter permissão: Para remover o diretório que acabou de criar:
sftp> rmdir /tmp/APPPrecisa remover um arquivo do sistema remoto ? No prompt do comando sftp use o comando rm seguido da localização do arquivo. Por exemplo, para remover o arquivo /tmp/file.txt execute:
sftp> rm /tmp/file.txtA saída do comando anterior vai ser algo como exibido abaixo:
Removing /tmp/file.txtExecutando comandos no cliente pelo prompt do sftp
Até o momento você executou comandos no sistem remoto (servidor) usando o prompt do comando sftp, mas você pode executar comandos no cliente.
Para executar comandos do shell do cliente, basta digitar o ! (ponto de exclamação) seguido do comando. O exemplo a seguir executa o comando users no cliente.
sftp> !usersO comando users é um comando usado para exibir na tela contas de usuários logados atualmente na máquina, no caso na máquina cliente. Caso queira aprender outros comandos para descobrir quem está logado no linux leia esse post.
Transferir arquivos do servidor para o cliente
A pergunta agora é como usar o comando sftp para transferir arquivos ?
Após conectar-se ao servidor, você já pode transferir arquivos do servidor para o cliente usando o comando get do sftp.
O exemplo a seguir, vou fazer o download do arquivo /etc/hosts armazenado no servidor para o diretório /home/dlncloud do cliente:
sftp> get /etc/hosts /home/dlncloudA saída do comando anterior vai ser algo como exibido abaixo:
Fetching /etc/hosts to /home/dlncloud/hosts
hostsPara vê se o arquivo foi transferido para o cliente no diretório /home/dlncloud, execute o comando lls seguido do diretório do cliente:
sftp> lls /home/dlncloudO arquivo hosts deverá aparecer na lista de arquivos.
Para o segundo exemplo, vou transferir tudo que tem dentro do diretório /etc/default que está no servidor para dentro /home/dlncloud no cliente. Para isso use a opção -r (recursivo) do comando get no sftp. Veja o exemplo:
sftp> get -r /etc/default /home/dlncloudTransferir arquivos do cliente para o servidor
Para copiar arquivos do cliente para o servidor, é bastante simples também, basta executar o comando put no sftp:
O Exemplo a seguir faz o upload do arquivo /bin/id armazenado no cliente para o diretório /tmp do servidor:
sftp> put /bin/id /tmpA saída do comando é algo similar a:
Uploading /bin/id to /tmpO segundo exemplo, copie tudo que tem dentro do diretório /etc/systemd no cliente para o diretório /home/dlncloud no servidor. A opção -r (recursivo) do comando put no sftp deve ser usada. Veja o exemplo:
sftp> put -r /etc/systemd /home/dlncloudEncerrar conexão com o servidor
Para encerrar a conexão e voltar ao sistema local, use o comando quit:
sftp> quitResolução de Problemas Comuns
Ao copiar arquivos usando SSH, é comum enfrentar dificuldades relacionadas à autenticação, permissões e conexão. Reconhecer a causa específica ajuda a aplicar a solução correta garantindo o sucesso na transferência.
Os problemas normalmente acontecem na autenticação, falhas na conexão ou por que não tem permissões para copiar ou gravar arquivos.
Falhas na conexão
Falhas na conexão podem ocorrer por problemas de rede, configuração errada do servidor SSH ou até o um sistema de firewall bloqueando o trafego.
Erros do tipo “Connection timed out“ indicam bloqueio no caminho. Uma forma de solucionar é ajustar as regras de firewall no cliente, servidor ou roteadores intermediários para liberar a porta SSH.
Certifique-se que porta que o SSH do servidor é 22, um servidor na internet normalmente usa outra porta. Se a conexão não se inicia, teste a comunicação com o comando nmap.
Confira se o serviço SSH está ativo executando no servidor o comando systemctl status sshd.
Erros de Autenticação
Se você receber uma mensagem como “Authentication failed“, o problema geralmente está nas credenciais. Verifique se o usuário e a senha estão corretos.
Caso use uma chave pública para autenticação, confirme que a chave SSH está devidamente configurada e autorizada no servidor remoto. A ausência ou má configuração do arquivo ~/.ssh/authorized_keys pode impedir o acesso.
Problemas de Permissão
Você pode conseguir se conectar, mas ainda assim não copiar arquivos, e o sftp retorna a mensagem “SFTP permission denied“. Isso indica que seu usuário não tem permissão para ler e/ou escrever nos diretórios de origem e/ou destino.
Use comandos como ls -l para verificar as permissões dos arquivos e pastas e atribua as permissões que autorizem a operação que está tentando fazer.
Programas Gráficos
Para as pessoas que não estão familiarizados com a linha de comando do linux ou precisa de uma solução rápida e amigável, existem programas que usam interface gráfica, como os programas clientes FileZilla e WinSCP, ambos suportam o SFTP.
Esses programas gráficos mencionados tem uma interface visual para transferir arquivos, facilitando a interação, permitindo maior praticidade ao transferir arquivos em ambientes que usam SSH.
Além disso, essas aplicações geralmente permitem salvar perfis de conexão, assim não precisa configurar novamente uma conexão a cada conexão.
Conclusão
Se você usa a interface de linha de comando no seu dia-a-dia de trabalho o comando sftp pode facilitar muito o fluxo de trabalho, pois é um comando simples, mas muito útil para para acessar servidores e transferir arquivos usando a interface de linha de comando do linux.
Embora não seja apropriado para todas as situações, o comando sftp é uma solução bem flexível e eficiente.
Ficou com alguma dúvida ou Gostou do conteúdo, deixe seu comentário abaixo.

