===== Exemplos dos comandos ssh e scp ===== ==== Nível Básico ==== * **Conectar-se a um servidor remoto com `ssh`:** - ssh usuario@servidor_remoto - Conecta-se ao servidor `servidor_remoto` com o usuário `usuario`. * **Copiar um arquivo para um servidor remoto com `scp`:** - scp arquivo.txt usuario@servidor_remoto:/caminho/destino/ - Copia o arquivo `arquivo.txt` para o diretório `/caminho/destino/` no servidor remoto. * **Copiar um arquivo de um servidor remoto para a máquina local com `scp`:** - scp usuario@servidor_remoto:/caminho/arquivo.txt ./ - Copia o arquivo `arquivo.txt` do servidor remoto para o diretório atual da máquina local. * **Conectar-se a um servidor remoto em uma porta diferente com `ssh`:** - ssh -p 2222 usuario@servidor_remoto - Conecta-se ao servidor `servidor_remoto` usando a porta `2222` em vez da porta padrão `22`. ==== Nível Intermediário ==== * **Executar um comando remotamente usando `ssh`:** - ssh usuario@servidor_remoto 'comando_a_ser_executado' - Conecta-se ao servidor e executa o comando `comando_a_ser_executado` no servidor remoto sem iniciar um shell interativo. * **Copiar um diretório inteiro para um servidor remoto com `scp`:** - scp -r /caminho/diretorio usuario@servidor_remoto:/caminho/destino/ - Copia recursivamente o diretório local `/caminho/diretorio` para o servidor remoto. * **Transferir múltiplos arquivos de uma só vez com `scp`:** - scp arquivo1.txt arquivo2.txt usuario@servidor_remoto:/caminho/destino/ - Copia os arquivos `arquivo1.txt` e `arquivo2.txt` para o servidor remoto. * **Transferir um arquivo através de uma porta específica com `scp`:** - scp -P 2222 arquivo.txt usuario@servidor_remoto:/caminho/destino/ - Usa a porta `2222` para transferir o arquivo para o servidor remoto. * **Encaminhar portas locais para o servidor remoto com `ssh` (Port Forwarding):** - ssh -L 8080:localhost:80 usuario@servidor_remoto - Encaminha a porta local `8080` para a porta `80` do servidor remoto, permitindo acessar o serviço do servidor localmente. ==== Nível Avançado ==== * **Executar um comando como superusuário no servidor remoto com `ssh`:** - ssh usuario@servidor_remoto 'sudo comando_a_ser_executado' - Conecta-se ao servidor remoto e executa um comando como superusuário (`sudo`). * **Copiar arquivos grandes com verificação de progresso com `scp`:** - scp -v arquivo_grande.iso usuario@servidor_remoto:/caminho/destino/ - Exibe o progresso detalhado da transferência do arquivo `arquivo_grande.iso` para o servidor remoto. * **Usar uma chave SSH específica para conectar com `ssh`:** - ssh -i ~/.ssh/minha_chave.pem usuario@servidor_remoto - Conecta-se ao servidor remoto usando a chave privada `minha_chave.pem`. * **Transferir um arquivo de um servidor para outro usando `scp`:** - scp usuario1@servidor1:/caminho/arquivo.txt usuario2@servidor2:/caminho/destino/ - Copia o arquivo de um servidor remoto para outro servidor remoto diretamente. * **Copiar arquivos entre servidores intermediários com `ssh` e `scp` (ProxyCommand):** - scp -o ProxyCommand="ssh usuario@proxy nc servidor_final 22" arquivo.txt usuario@servidor_final:/caminho/destino/ - Usa um servidor intermediário (proxy) para transferir arquivos ao destino final. * **Transferir arquivos grandes com compressão habilitada via `scp`:** - scp -C arquivo_grande.tar.gz usuario@servidor_remoto:/caminho/destino/ - Usa compressão para transferir o arquivo `arquivo_grande.tar.gz` de forma mais eficiente. ==== Nível Especializado ==== * **Criar um túnel SSH reverso com `ssh`:** - ssh -R 9090:localhost:80 usuario@servidor_remoto - Cria um túnel reverso onde a porta `9090` no servidor remoto é redirecionada para a porta `80` da máquina local. * **Montar um diretório remoto via SSH usando `sshfs`:** - sshfs usuario@servidor_remoto:/caminho/diretorio_remoto /mnt/diretorio_local - Monta o diretório do servidor remoto na máquina local usando o protocolo SSH, tornando o diretório acessível como se fosse local. * **Executar um comando em vários servidores simultaneamente usando `ssh`:** - for servidor in servidor1 servidor2 servidor3; do ssh usuario@$servidor 'comando_a_ser_executado'; done - Executa um comando em múltiplos servidores em sequência. * **Criar um túnel SSH para acessar serviços de rede privados com `ssh`:** - ssh -D 1080 usuario@servidor_remoto - Cria um proxy SOCKS na porta `1080` da máquina local, permitindo encaminhar o tráfego de rede para o servidor remoto através do SSH. * **Transferir arquivos através de múltiplos servidores com `scp` (JumpHost):** - scp -o "ProxyJump usuario@proxy" arquivo.txt usuario@servidor_final:/caminho/destino/ - Usa o comando `ProxyJump` para transferir arquivos através de um servidor intermediário para o servidor final. * **Usar `rsync` sobre SSH para sincronizar diretórios de forma eficiente:** - rsync -avz -e ssh /diretorio_local usuario@servidor_remoto:/caminho/destino - Sincroniza diretórios entre a máquina local e o servidor remoto usando o protocolo SSH, com compressão e preservação de permissões.