Tutorial de Linux / Conecte-se por SSH e transfira arquivos com scp e sftp
Secure Shell (SSH) fornece login remoto criptografado e execução de comandos, enquanto as ferramentas OpenSSH também permitem transferência de arquivos através de scp e sftp. Verifique a impressão digital da chave do host do servidor na primeira conexão e mantenha o método de login existente até que a autenticação por chave tenha sido testada.
Verifique as permissões da chave privada com permissões de arquivos e investigue tempos limite ou falhas de nome com diagnóstico de rede. No Ubuntu, inspecione a ativação de soquetes assim como o serviço usando systemctl status ssh.service ssh.socket; isso não significa que ambas as unidades devem estar sempre ativas.
Exercícios de configuração do sistema usam uma VM convencional Ubuntu 26.04 LTS ou Rocky Linux 9 como ambiente de referência. Contêineres, WSL e outras versões podem diferir na configuração de serviços e pacotes. Prepare a recuperação do console e registre suas versões usando a aula de preparação da máquina virtual, em inglês.
Instale o cliente e o servidor nos locais corretos
O computador onde você digita o comando é o cliente; a máquina Linux em que você faz login é o servidor. O servidor precisa de um endereço acessível, uma conta de usuário existente, sshd e regras de rede que permitam a porta SSH real. O cliente precisa dos comandos ssh, scp e sftp instalados; no Ubuntu eles são fornecidos por openssh-client e no Rocky Linux por openssh-clients. Use apenas o bloco de instalação correspondente à sua distribuição. No Ubuntu, apt update atualiza os metadados dos pacotes.
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
sudo dnf install openssh-server
sudo systemctl enable --now sshd
O Ubuntu normalmente usa ssh e o Rocky Linux usa sshd, mas inspecione o serviço instalado. Firewalls do host, regras de segurança na nuvem e redirecionamento de NAT são separados. Mantenha uma sessão existente aberta e estabeleça a recuperação pelo console antes de restringir a autenticação ou alterar a porta SSH.
Verifique a identidade do servidor antes de aceitar a primeira chave
Use um canal já confiável, como o console do servidor, para obter sua impressão digital da chave do host. Execute o primeiro comando no servidor e o segundo no cliente. Substitua user e server.example pelos valores reais. Se Ed25519 não estiver disponível ou for proibido pela política, verifique a chave do host realmente usada pelo servidor.
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
ssh user@server.example
Compare a solicitação do cliente com a impressão digital SHA256 confiável antes de aceitá-la. Um aviso de chave do host alterada requer investigação: pode ocorrer após uma reinstalação legítima ou indicar interceptação. Não exclua todo o arquivo known_hosts nem desative a verificação para silenciá-lo. Atualize apenas a entrada relevante após confirmar uma substituição legítima.
Crie um par de chaves e instale apenas a chave pública
No cliente, confirme que ~/.ssh existe e pertence à sua conta. Se ainda não existir, crie-a com mkdir -p "$HOME/.ssh" e, no Linux, use chmod 700 "$HOME/.ssh". Use um arquivo de chave novo, sem substituir chaves existentes.
ssh-keygen -t ed25519 -f ~/.ssh/linux-course-key
ssh-copy-id -i ~/.ssh/linux-course-key.pub user@server.example
ssh -i ~/.ssh/linux-course-key user@server.example
Se a geração de chave solicitar a substituição de um arquivo existente, pare e escolha um nome de arquivo diferente. Proteja a chave privada com uma frase-senha e mantenha-a no cliente; instale apenas a chave .pub no servidor. Quando ssh-copy-id não estiver disponível, acrescente a linha da chave pública ao ~/.ssh/authorized_keys da conta através de um método aprovado. As permissões comuns são 700 para .ssh e 600 para authorized_keys, com a propriedade correta.
Teste a partir de um novo terminal. Fornecer um caminho de chave não prova por si só que a chave foi usada; o agente ou a autenticação por senha podem autenticar em seu lugar. Quando necessário, inspecione a saída de ssh -v -o IdentitiesOnly=yes -i ... para o método bem-sucedido. Escolha um tipo de chave suportado e aprovado em ambientes com políticas criptográficas específicas ou FIPS.
Envie e recupere um arquivo pequeno com scp
printf "SSH transfer test\n" > transfer-test.txt
scp -i ~/.ssh/linux-course-key transfer-test.txt user@server.example:~/transfer-test.txt
scp -i ~/.ssh/linux-course-key user@server.example:~/transfer-test.txt ./transfer-returned.txt
cmp transfer-test.txt transfer-returned.txt
Execute este exemplo no cliente usando uma conta de laboratório, após confirmar que o nome do arquivo remoto não está em uso: scp pode sobrescrevê-lo. Verifique também se os arquivos locais transfer-test.txt, transfer-returned.txt e transfer-sftp.txt ainda não existem: a criação e os downloads podem sobrescrevê-los. Se cmp terminar com status 0 e sem saída, os conteúdos são iguais; status 1 indica diferença e valores maiores indicam erro. Versões recentes do OpenSSH scp usam SFTP por padrão; verifique a compatibilidade com servidores mais antigos em vez de assumir o comportamento legado do SCP.
Use sftp interativo e portas personalizadas
sftp -i ~/.ssh/linux-course-key user@server.example
Abra o sftp a partir da pasta local que contém transfer-test.txt. Digite os seguintes comandos no prompt do sftp. pwd e ls referem-se ao lado remoto; lpwd e lls referem-se ao lado local. Verifique ambos os locais antes de enviar ou baixar.
pwd
lpwd
ls
put transfer-test.txt
get transfer-test.txt transfer-sftp.txt
bye
Para a porta 2222, o ssh usa -p 2222, enquanto scp e sftp usam -P 2222. Investigue o serviço em escuta e a política para recusa de conexão, e o nome de usuário, chaves e permissões para falha de autenticação. Logs detalhados podem expor endereços e caminhos de contas, então oculte-os antes de compartilhar. Remova apenas os arquivos de laboratório e registros de chave pública que você não precisa mais.




