Dominando o SSH: Seu Guia Essencial de Linha de Comando
Aprenda comandos práticos de SSH para login, chaves, transferência de arquivos, encaminhamento de porta e configuração reutilizável de host.
Dominando o SSH: Seu Guia Essencial de Linha de Comando
O protocolo Secure Shell (SSH) oferece uma maneira criptografada de fazer login em sistemas remotos, executar comandos e transferir arquivos. Se você gerencia servidores, alguns hábitos de linha de comando SSH tornam seu trabalho mais rápido e seguro.
Este guia aborda os comandos que você mais usará: login remoto, autenticação por chave, scp, sftp, encaminhamento de porta local e aliases ~/.ssh/config.
Estabelecendo Login Remoto Seguro
O uso mais frequente do SSH é garantir uma conexão de terminal a um servidor remoto. A sintaxe básica é direta, mas existem opções cruciais para maior segurança e usabilidade.
Sintaxe Básica de Conexão
O comando padrão requer especificar o usuário remoto e o endereço do host (IP ou nome de domínio):
ssh [usuário]@[host]
# Exemplo:
ssh [email protected]
Especificando uma Porta Não Padrão
Por razões de segurança, muitos administradores alteram a porta SSH padrão (Porta 22). Use a flag -p para especificar um número de porta diferente:
ssh -p 2222 [email protected]
Executando Comandos Remotos Únicos
O SSH não se limita a abrir um shell interativo. Você pode executar um único comando no servidor remoto e ter a saída retornada localmente, o que é extremamente útil para scripts e verificações rápidas.
# Executa 'ls -l' no diretório /var/log do servidor remoto
ssh usuario@host 'ls -l /var/log'
# Verifica o tempo de atividade do servidor
ssh usuario@host uptime
Gerenciando Autenticação com Chaves SSH
A autenticação por senha é frequentemente exposta a ataques de força bruta. As chaves SSH usam uma chave privada em sua máquina e uma chave pública no servidor remoto, para que o servidor possa verificar você sem receber sua senha.
Gerando Pares de Chaves
Se você ainda não tem um par de chaves, pode gerar um usando ssh-keygen. É uma boa prática usar uma frase secreta forte para proteger sua chave privada.
ssh-keygen -t ed25519 -C "[email protected]"
As chaves RSA ainda são comuns, especialmente para sistemas mais antigos. Para uma nova chave em uma configuração OpenSSH moderna, Ed25519 é geralmente a escolha padrão mais simples.
Copiando a Chave Pública para o Servidor
O utilitário ssh-copy-id é a maneira mais simples de instalar sua chave pública local no arquivo ~/.ssh/authorized_keys do usuário remoto. Normalmente, você digita sua senha uma vez, e os logins futuros podem usar a chave.
# Copia sua chave pública padrão para o servidor e define permissões comuns
ssh-copy-id usuario@host
Dica: Usando a Chave Privada Se sua chave privada não estiver no local padrão (
~/.ssh/id_rsa), você deve usar a flag-ipara especificar seu caminho ao conectar:ssh -i ~/.ssh/minha_chave_personalizada usuario@host
Transferências Seguras de Arquivos
O SSH fornece duas ferramentas principais para transferência segura de arquivos: scp (Cópia Segura) e sftp (Protocolo de Transferência Segura de Arquivos).
A. Usando Cópia Segura (scp)
scp é ideal para transferências de arquivos simples, rápidas e únicas, oferecendo uma interface de linha de comando modelada após o comando Unix padrão cp (copiar).
Transferindo Arquivos do Local para o Remoto
# Sintaxe: scp [arquivo_local] [usuário]@[host]:/[caminho_remoto]
scp pacote_implantacao.tar.gz usuario@servidorweb:/var/www/uploads/
Transferindo Arquivos do Remoto para o Local
# Sintaxe: scp [usuário]@[host]:/[arquivo_remoto] [caminho_local]
scp usuario@servidorbd:/var/log/backup.sql .
Copiando Diretórios Recursivamente
Use a flag -r para copiar estruturas de diretórios inteiras.
scp -r ~/arquivos_projeto/ usuario@servidorconstrucao:/home/usuario/construcoes/
B. Usando Protocolo de Transferência Segura de Arquivos (sftp)
sftp estabelece uma sessão interativa, semelhante a um cliente FTP tradicional, mas protegida via SSH. É mais adequado para navegar em diretórios remotos, listar arquivos e realizar múltiplas transferências em uma única sessão.
Iniciando uma Sessão sftp
sftp usuario@host
Comandos Comuns da Sessão sftp
| Comando | Descrição |
|---|---|
ls |
Listar arquivos remotos |
lls |
Listar arquivos locais |
get nome_arquivo |
Baixar um arquivo do servidor remoto |
put nome_arquivo |
Enviar um arquivo para o servidor remoto |
cd /caminho/ |
Alterar diretório remoto |
lcd /caminho/ |
Alterar diretório local |
quit |
Sair da sessão sftp |
Tunelamento SSH com Encaminhamento de Porta Local
O tunelamento SSH, ou encaminhamento de porta, permite criptografar conexões para protocolos não seguros ou acessar serviços em uma rede interna através de um host de salto. A forma mais comum é o Encaminhamento de Porta Local.
Encaminhamento de Porta Local (-L)
O encaminhamento local roteia o tráfego de uma porta em sua máquina local para uma porta especificada em um host remoto através do servidor SSH. Isso é útil para acessar bancos de dados internos, interfaces web ou serviços proprietários que não estão diretamente expostos à internet pública.
Cenário: Você quer acessar um servidor web interno privado (acessível apenas a partir de servidorsalto) na porta 80.
# Sintaxe: ssh -L [porta_local]:[host_destino]:[porta_destino] [usuário]@[servidorsalto]
ssh -L 8080:web-interno.lan:80 usuario@servidorsalto -N
-L 8080:web-interno.lan:80: O tráfego que chega à sua máquina local na porta 8080 é encaminhado paraweb-interno.lanna porta 80, viaservidorsalto.-N: Diz ao SSH para não executar um comando remoto; ele apenas configura o túnel.
Uma vez estabelecida a conexão, você pode acessar o site interno navegando em seu navegador local para http://localhost:8080.
Melhorando a Eficiência com o Arquivo de Configuração SSH
Digitar manualmente comandos SSH complexos, incluindo portas personalizadas, nomes de usuário e caminhos de chave, é ineficiente. O arquivo de configuração SSH (~/.ssh/config) permite definir aliases e configurações para servidores acessados com frequência.
Exemplo de Configuração (~/.ssh/config)
Crie ou edite o arquivo ~/.ssh/config com a seguinte estrutura:
# Servidor 1: Chave padrão, porta não padrão
Host dev-web
HostName 10.0.0.50
User usuario_implantacao
Port 2222
IdentityFile ~/.ssh/id_rsa_dev
# Servidor 2: Acesso via servidor de salto exigindo autenticação por chave
Host producao-bd
HostName 10.0.20.15
User admin_sistema
IdentityFile ~/.ssh/chave_producao
LocalForward 54320 127.0.0.1:5432
Nesse segundo exemplo, ssh producao-bd abre uma porta local em sua estação de trabalho. Você pode então apontar um cliente PostgreSQL para localhost:54320, e o SSH transporta o tráfego para 127.0.0.1:5432 visto do host remoto.
Conectando com Aliases
Uma vez configurado, conectar-se torna-se dramaticamente mais simples:
# Conecta a 10.0.0.50 na porta 2222 como usuario_implantacao
ssh dev-web
# Conecta e configura automaticamente o encaminhamento de porta (se configurado)
ssh producao-bd
Principais Conclusões
Comece com ssh usuario@host, adicione autenticação baseada em chave e mova opções repetidas para ~/.ssh/config. Depois que esses fundamentos estiverem sólidos, o encaminhamento local com ssh -L oferece uma maneira controlada de alcançar serviços privados sem expô-los diretamente à rede.