O protocolo SSH (Secure Shell) é um protocolo de rede para gerenciamento remoto de sistemas operacionais via linha de comando. É amplamente considerado o padrão para acesso remoto a máquinas *nix. Ele permite login seguro em um servidor, execução remota de comandos, gerenciamento de arquivos (criar, excluir, copiar etc.) e muito mais. A maioria dos provedores de nuvem exige SSH para acessar seus serviços. Neste artigo, veremos como copiar arquivos via SSH em sistemas Windows e Linux.
O SSH pode transmitir com segurança qualquer tipo de dado (áudio, vídeo, dados de protocolo) por meio de um canal criptografado. Diferente de protocolos obsoletos e inseguros como Telnet e rlogin, o SSH garante confidencialidade e autenticidade — essenciais para a comunicação na Internet.
Veja como é estabelecida uma conexão segura entre cliente e servidor:
Conexão TCP: Por padrão, o servidor escuta na porta 22. Ambas as partes compartilham uma lista de algoritmos compatíveis (compressão, criptografia, troca de chaves) e concordam em quais usar.
Autenticação: Para evitar falsificação de identidade, ambas as partes verificam suas identidades usando criptografia assimétrica (pares de chaves pública/privada). O servidor é autenticado primeiro. Na primeira conexão, o cliente exibe um aviso com detalhes do servidor. As chaves dos servidores confiáveis são armazenadas em /home/<username>/.ssh/known_hosts.
Geração de chave: Depois que o servidor é verificado, ambas as partes geram uma chave simétrica para criptografar todos os dados trocados.
Autenticação do usuário: É feita usando senha ou chave pública enviada pelo cliente e armazenada no servidor em /home/<username>/.ssh/authorized_keys.
A implementação mais popular no Linux é o OpenSSH, que vem pré-instalado na maioria das distribuições (Ubuntu, Debian, RHEL etc.). No Windows, clientes como PuTTY ou MobaXterm são usados. Desde o Windows 10 e Server 2019, as ferramentas OpenSSH também estão disponíveis nativamente.
Duas ferramentas principais para copiar arquivos no Linux são scp e sftp. Ambas vêm com o OpenSSH.
O SSH suporta duas versões de protocolo: 1 e 2. O OpenSSH suporta ambas, mas a versão 1 raramente é usada.
Para ativar o autocompletar com Tab ao usar scp, configure a autenticação por chave pública:
Gerar um par de chaves:
ssh-keygen
Saída esperada:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Por padrão, as chaves (id_rsa para privada e id_rsa.pub para pública) são salvas em ~/.ssh/.
Copiar a chave pública para a máquina remota:
ssh-copy-id [username]@[ip-address]
Após inserir a senha do usuário, uma mensagem confirmará que a chave foi adicionada.
Copiar arquivos com SSH é comum ao implantar aplicações manualmente em servidores. Como alternativa, você pode publicar aplicações usando uma plataforma de deploy na nuvem sem precisar transferir arquivos manualmente.
Para transferências pequenas (por exemplo, arquivos de configuração), scp é ideal.
Copiar de local para remoto:
scp test.txt user@192.168.1.29:/home/user/
Copiar vários arquivos:
scp test1.txt test2.txt user@192.168.1.29:/home/user/
Copiar de remoto para local:
scp user@192.168.1.29:/home/user/test.txt ~/
Copiar diretórios:
scp -r testdir user@192.168.1.29:/home/user/
Copiar de remoto para remoto:
scp gendo@192.168.1.25:/home/gendo/test.txt user@192.168.1.29:/home/user/
SFTP é outra ferramenta incluída no OpenSSH. Desde OpenSSH 9.0, scp usa SFTP por padrão em vez do protocolo SCP/RCP.
Ao contrário do FTP clássico, sftp transmite dados criptografados por meio de um túnel seguro. Não é necessário um servidor FTP separado.
Exemplo de uso:
sftp misato@192.168.1.29
sftp> ls
sftp> lcd testdir/
sftp> get test.txt
sftp> bye
Gerenciadores de arquivos gráficos como Midnight Commander e Nautilus também usam sftp. No Nautilus, o servidor remoto aparece como uma pasta local, por exemplo user@ip.

No Windows, use a ferramenta de linha de comando pscp do PuTTY para copiar arquivos.
Copiar para o servidor:
pscp C:\server\test.txt misato@192.168.1.29:/home/misato/
Copiar do servidor:
pscp misato@192.168.1.29:/home/misato/test.txt C:\file.txt
Listar arquivos no servidor remoto:
pscp -ls user@192.168.1.29:/home/misato
Usar aspas para caminhos com espaços:
pscp "C:\dir\bad file name.txt" misato@192.168.1.29:/home/misato/
Exibir ajuda:
pscp
Vimos como copiar arquivos de e para um servidor usando o protocolo seguro SSH. Se você trabalha com servidores em nuvem, entender SSH é essencial — é o método padrão de acesso remoto a máquinas *nix e uma parte fundamental do trabalho diário de DevOps e administração de sistemas.