SSH no Mac pelo Terminal: guia prático

O que é SSH (em uma linha)
SSH (Secure Shell) é um protocolo que cria um canal criptografado para acessar e controlar remotamente outro computador ou servidor.
Por que usar SSH no Mac
- Segurança: criptografia entre cliente e servidor.
- Produtividade: permite executar comandos remotos e automatizar tarefas.
- Transferência de arquivos segura com scp/sftp.
- Compatível com a maioria dos serviços e servidores Unix/Linux.
1. Abrindo o Terminal
Existem duas formas rápidas de abrir o Terminal no macOS:
- Usando o Spotlight: pressione Command + Espaço, digite Terminal e pressione Enter.
- Usando o Finder: Aplicativos > Utilitários > Terminal.
Dica: você pode adicionar o Terminal ao Dock arrastando o ícone a partir de Aplicativos > Utilitários.
2. Iniciando uma conexão SSH
- Localize o nome de usuário no servidor remoto (por exemplo, “ubuntu”, “ec2-user” ou seu usuário personalizado) e o endereço IP ou domínio do servidor.
- No Terminal, execute:
ssh usuario@ip-ou-dominio
Substitua usuario pelo seu nome de conta remota e ip-ou-dominio pelo IP (por exemplo 203.0.113.5) ou hostname (por exemplo exemplo.com).
- Na primeira conexão o Terminal pedirá para confirmar a autenticidade do host. Digite yes e pressione Enter.
- Em seguida será solicitada a senha, a qual não aparece enquanto você digita. Se você configurou chaves SSH, a senha pode não ser solicitada.
Importante: se a porta SSH no servidor não for a padrão (22), especifique-a com -p:
ssh -p 2222 usuario@ip-ou-dominio
3. Autenticação por chave (sem senha)
A autenticação por chave reduz riscos e facilita logins automatizados.
Gerar par de chaves (no seu Mac):
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- Aceite o caminho padrão (~/.ssh/id_rsa) ou escolha outro.
- Opcional: defina uma passphrase para proteger a chave privada.
Copiar a chave pública para o servidor remoto:
ssh-copy-id usuario@ip-ou-dominio
Se ssh-copy-id não estiver disponível, use:
cat ~/.ssh/id_rsa.pub | ssh usuario@ip-ou-dominio "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Verifique permissões no servidor: ~/.ssh com 700 e authorized_keys com 600.
4. Transferindo arquivos com scp e sftp
Exemplos comuns:
Copiar arquivo local para servidor:
scp /caminho/arquivo.txt usuario@ip-ou-dominio:/caminho/remoto/
Copiar do servidor para a máquina local:
scp usuario@ip-ou-dominio:/caminho/remoto/arquivo.tar.gz /caminho/local/
Para transferências interativas use sftp:
sftp usuario@ip-ou-dominio
sftp> get /caminho/remoto/arquivo
sftp> put /caminho/local/arquivo
sftp> bye
Se precisar de desempenho melhor em transferências grandes, considere rsync sobre SSH:
rsync -avz -e "ssh -p 2222" /caminho/local/ usuario@ip:/caminho/remoto/
5. Comandos essenciais dentro da sessão SSH
- cd diretório — mudar para diretório.
- ls — listar arquivos.
- mkdir diretório — criar pasta.
- rm arquivo — remover arquivo (use -r para recursivo).
- cp origem destino — copiar.
- mv origem destino — mover/renomear.
- top ou htop — ver uso de CPU/memória.
- tail -f arquivo — acompanhar logs em tempo real.
Cheat sheet rápido (copie para referência):
# conectar
ssh usuario@host
# porta não padrão
ssh -p 2222 usuario@host
# gerar chave
ssh-keygen -t rsa -b 4096
# copiar chave
ssh-copy-id usuario@host
# copiar arquivo para o servidor
scp arquivo.txt usuario@host:/home/usuario/
# copiar do servidor
scp usuario@host:/var/log/syslog ./
# rsync eficiente
rsync -avz -e ssh ./ pasta_remota:/backup/
6. Encerrando a sessão SSH
Métodos para sair do shell remoto:
- Digite exit e pressione Enter.
- Pressione Control + D.
- Se a sessão travar, você pode fechar o terminal ou usar o escape do ssh: Enter ~ . (apenas se necessário).
7. Segurança e endurecimento (checklist)
- Use autenticação por chave sempre que possível.
- Desative logins por senha no servidor (em /etc/ssh/sshd_config: PasswordAuthentication no).
- Troque a porta padrão 22 por outra porta quando adequado, mas não confie só nisso.
- Use um firewall (ufw, iptables) para permitir apenas IPs/portas necessárias.
- Configure o Fail2Ban para bloquear tentativas repetidas.
- Mantenha o OpenSSH atualizado no servidor e no macOS.
- Revise e limite o arquivo authorized_keys; use options (from=, no-agent-forwarding) quando necessário.
Exemplo parcial de /etc/ssh/sshd_config relevante:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222
AllowUsers seu_usuario outro_usuario
8. Quando o SSH falha — problemas e soluções rápidas
- Erro “Connection refused”: o serviço SSH pode não estar rodando no servidor ou a porta está bloqueada. Verifique sshd no servidor e firewall.
- Erro “Permission denied (publickey)”: chave pública ausente ou permissões incorretas. Verifique ~/.ssh/authorized_keys e permissões (700/600).
- Erro de timeout: problemas de rede, IP incorreto ou porta bloqueada. Teste com ping e telnet/ip: 2222.
- Host key changed warning: pode indicar troca legítima de servidor ou ataque man-in-the-middle. Confirme com o administrador e, se seguro, remova a linha correspondente em ~/.ssh/known_hosts e reconecte.
9. Alternativas e cenários avançados
- Usar mosh para sessões mais tolerantes a perda de conexão (bom para conexões móveis instáveis).
- Tunelamento (port forwarding): encaminhe portas locais para serviços remotos.
Exemplo de tunnel local (acessar serviço remoto localhost:8080 como local:8080):
ssh -L 8080:localhost:8080 usuario@servidor
Túnel inverso (expor porta local em servidor remoto):
ssh -R 9000:localhost:3000 usuario@servidor
10. Role-based checklists
Para desenvolvedores:
- Gerar chave SSH com passphrase.
- Adicionar chave ao ssh-agent: ssh-add ~/.ssh/id_rsa.
- Criar entry no ~/.ssh/config para atalhos.
Exemplo ~/.ssh/config:
Host prod
HostName exemplo.com
User deploy
Port 2222
IdentityFile ~/.ssh/id_rsa
Para administradores de sistema:
- Auditar authorized_keys regularmente.
- Configurar autenticação multifator quando possível.
- Automatizar deploy de chaves com ferramentas de config management.
Para entusiastas e iniciantes:
- Usar chaves e manter backup seguro da chave privada.
- Praticar com uma VM local antes de tocar servidores de produção.
11. Mini-metodologia para conectar com segurança (3 passos)
- Preparar: gerar chave, testar conexão localmente, garantir backup da chave.
- Implantar: copiar a chave pública para o servidor com ssh-copy-id ou manualmente.
- Verificar: checar login sem senha, revisar permissões e ajustar sshd_config.
12. Caixa de fatos rápidos
- Porta padrão do SSH: 22.
- Algoritmos de chave recomendados: RSA 2048/4096, ou ed25519.
- Arquivos chave no macOS: ~/.ssh/id_rsa (privada), ~/.ssh/id_rsa.pub (pública).
- Permissões seguras: ~/.ssh = 700; authorized_keys = 600.
13. Glossário (uma linha cada)
- SSH: protocolo para shell remoto criptografado.
- scp: utilitário para cópia segura via SSH.
- sftp: subsistema interativo para transferir arquivos sobre SSH.
- ssh-agent: serviço que armazena chaves em memória para evitar digitar passphrase repetidamente.
Perguntas frequentes
Posso acessar meu próprio Mac via SSH a partir de outro dispositivo?
Sim. Ative “Remote Login” em Preferências do Sistema > Compartilhamento e use ssh usuario@seu-ip-ou-hostname.
Como descubro o IP do meu Mac?
Em Preferências do Sistema > Rede, selecione a conexão ativa (Wi‑Fi ou Ethernet) e veja o endereço IPv4. Ou no Terminal: ifconfig.
Posso usar SSH sem senha?
Sim. Use par de chaves (pública/privada). A chave pública vai ao servidor e o cliente usa a privada localmente.
O SSH é seguro?
Sim, quando configurado corretamente e mantido atualizado. Use chaves, desative autenticação por senha e limite acesso por firewall.
Posso transferir arquivos com SSH?
Sim. Use scp para cópias diretas ou sftp/rsync para operações interativas/eficientes.
Solução de problemas práticos
- Se “ssh-copy-id” não estiver instalado no macOS, copie a chave manualmente ou instale via brew.
- Se o servidor usa autenticação por chave, mas você está sendo pedido a senha, verifique se o ssh-agent está carregando sua chave: ssh-add -l.
Conclusão
SSH é uma ferramenta essencial para administração remota e desenvolvimento. No macOS, o Terminal fornece tudo o que você precisa para conectar, transferir arquivos e automatizar tarefas. Adote chaves, revise permissões e endureça o servidor para manter suas conexões seguras.
Resumo final: comece abrindo o Terminal, gere chaves, copie a chave pública para o servidor, teste a conexão e aplique as práticas de segurança listadas.
Importante: sempre mantenha backups seguros das chaves privadas e nunca as compartilhe.