Aprenda / Terminal e linha de comando

IntermediárioAula 12 de 1616 min0% da trilha

SSH: conectando num servidor remoto

Tudo que você aprendeu até aqui roda igual num servidor do outro lado do mundo — SSH é a porta de entrada pra isso.

Até agora, todo comando desta trilha rodou na sua própria máquina. Mas o destino final de praticamente todo projeto real é um servidor remoto — um computador em outro lugar do mundo, sem tela nem mouse, que você só acessa via terminal. ssh (Secure Shell) é o comando que abre essa conexão.

Conectando com ssh usuario@host

terminal
ssh joana@203.0.113.42

joana é o usuário que existe naquele servidor (não necessariamente igual ao seu usuário local), e 203.0.113.42 é o endereço do servidor — pode ser um IP direto ou um domínio. Depois de autenticado, o prompt muda pra indicar que você não está mais na sua máquina: repare que virou joana@servidor, não o nome da sua máquina local. Todo comando que você aprendeu nesta trilha — ls, cd, nano, ps — funciona exatamente igual aqui, só que rodando no servidor remoto.

Senha vs. chave pública/privada

O exemplo acima pediu senha, que é o jeito mais simples de autenticar — mas também o menos seguro, vulnerável a tentativas repetidas de adivinhação. O jeito recomendado em produção é autenticação por par de chaves: uma chave privada, que fica só na sua máquina e nunca é compartilhada, e uma chave pública correspondente, que você registra no servidor.

terminal (na sua máquina, uma vez só)
ssh-keygen -t ed25519

Isso gera dois arquivos: id_ed25519 (a chave privada — protege com uma senha se possível, e nunca compartilhe esse arquivo) e id_ed25519.pub (a chave pública, segura pra compartilhar). Pra autenticar sem senha, a chave pública precisa estar dentro do arquivo ~/.ssh/authorized_keys no servidor — o servidor usa isso pra conferir que quem está tentando entrar realmente possui a chave privada correspondente, sem a chave privada nunca sair da sua máquina.

scp — copiando arquivo entre máquinas

Com SSH configurado, copiar arquivo entre sua máquina e o servidor usa scp (secure copy), com uma sintaxe parecida com cp, mas indicando de qual máquina pra qual:

terminal (da sua máquina pro servidor)
scp deploy.sh joana@203.0.113.42:/home/joana/

O formato usuario@host:/caminho indica o destino remoto. Pra copiar no sentido contrário — do servidor pra sua máquina — só inverte a ordem dos dois argumentos:

terminal (do servidor pra sua máquina)
scp joana@203.0.113.42:/home/joana/log-erro.txt .

O . no final significa "salva aqui, na pasta atual da minha máquina" — o mesmo . da lição 2.

Exercício

Você já gerou seu par de chaves com ssh-keygen e quer conseguir entrar no servidor 198.51.100.7 como usuário deploy sem digitar senha toda vez. Que arquivo, no servidor, precisa conter sua chave pública?

Quiz rápido

Por que autenticação por par de chaves é considerada mais segura que autenticação por senha no SSH?
No comando 'scp deploy.sh joana@203.0.113.42:/home/joana/', em que direção o arquivo é copiado?