# Como acessar a VPS por chave SSH em vez de senha, via SSH

> No seu computador, crie uma chave com ssh-keygen e copie a parte pública para a VPS com ssh-copy-id (no Windows, com um comando do PowerShell). Depois, a VPS deixa você entrar sem digitar a senha. Um apelido no arquivo ~/.ssh/config encurta o comando para ssh minhavps.

Com uma chave SSH, você entra na VPS sem digitar a senha toda vez, e com mais segurança. Crie a chave no seu computador com `ssh-keygen`, copie a parte pública para a VPS com `ssh-copy-id` (no Windows, com um comando do PowerShell) e, se quiser, crie um apelido no arquivo `~/.ssh/config` para conectar só com `ssh minhavps`.

## Antes de começar
- Saiba acessar a VPS por SSH com senha. Se ainda não sabe, veja "Como acessar sua VPS por SSH pelo terminal (Linux, Windows e Mac)".
- Tenha o IP da VPS e a senha root. Você vai usar a senha uma última vez, para copiar a chave.
- Os comandos deste artigo rodam no terminal do **seu computador** (Linux, Mac ou PowerShell no Windows 10 ou 11), não na VPS, a não ser quando indicado.
- Continue com a senha root guardada num lugar seguro. Ela segue valendo e é a sua saída se você perder a chave ou trocar de computador.

## Como a chave funciona
A chave tem duas partes, criadas juntas:

- A **chave privada** (`id_ed25519`) fica só no seu computador. Nunca envie para ninguém nem cole em chat.
- A **chave pública** (`id_ed25519.pub`) vai para a VPS, no arquivo `~/.ssh/authorized_keys`. Ela pode ser compartilhada sem risco.

Quando você conecta, a VPS confere se a sua chave privada combina com a pública que ela guarda.

## Criar a chave no seu computador
1. Abra o terminal do seu computador e rode:
   ```
   ssh-keygen -t ed25519 -C "meu-computador"
   ```
   Resultado: o terminal pergunta onde salvar (`Enter file in which to save the key`).
2. Aperte `Enter` para aceitar o local padrão.
   Resultado: o terminal pede uma senha para a chave (`Enter passphrase`).
3. Digite uma senha para proteger a chave e confirme, ou aperte `Enter` duas vezes para deixar sem senha.
   Resultado: o terminal mostra onde salvou as duas partes, por exemplo `~/.ssh/id_ed25519` e `~/.ssh/id_ed25519.pub`.

Se aparecer que o arquivo já existe (`already exists. Overwrite (y/n)?`), responda `n`: você já tem uma chave e pode usá-la.

## Copiar a chave para a VPS no Linux e no Mac
1. Rode, trocando `<IP_DA_VPS>` pelo IP da sua VPS:
   ```
   ssh-copy-id root@<IP_DA_VPS>
   ```
   Resultado: o terminal pede a senha root da VPS.
2. Digite a senha root e aperte `Enter`.
   Resultado: aparece `Number of key(s) added: 1`.

## Copiar a chave para a VPS no Windows
O Windows não tem o `ssh-copy-id`. No PowerShell, use este comando, que faz o mesmo:

1. Rode, trocando `<IP_DA_VPS>` pelo IP da sua VPS:
   ```
   type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@<IP_DA_VPS> "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
   ```
   Resultado: o terminal pede a senha root da VPS.
2. Digite a senha root e aperte `Enter`.
   Resultado: o comando termina sem mensagem e o prompt do PowerShell volta.

## Criar um apelido para a VPS (opcional)
Com um apelido, você conecta com `ssh minhavps` em vez de digitar usuário e IP.

1. Abra (ou crie) o arquivo de configuração do SSH no seu computador:
   - Linux e Mac: `nano ~/.ssh/config`
   - Windows (PowerShell): `notepad $env:USERPROFILE\.ssh\config`
   Resultado: abre o arquivo, vazio se ele ainda não existia. No Windows, se o Bloco de Notas perguntar se quer criar o arquivo, clique em **Sim**.
2. Cole o bloco abaixo, trocando o IP. Se você criou um usuário próprio na VPS, troque `root` por ele:
   ```
   Host minhavps
       HostName <IP_DA_VPS>
       User root
       IdentityFile ~/.ssh/id_ed25519
   ```
   Resultado: o apelido `minhavps` fica configurado. Se a VPS usa outra porta para o SSH, acrescente uma linha `Port <PORTA>`.
3. Salve e feche o arquivo (no `nano`, `Ctrl` + `O`, `Enter` e `Ctrl` + `X`).
   Resultado: o prompt do terminal volta.

No Windows, confira que o arquivo foi salvo como `config`, sem `.txt` no fim.

## Como saber se deu certo
1. Conecte na VPS:
   ```
   ssh minhavps
   ```
   Ou, sem apelido: `ssh root@<IP_DA_VPS>`.
   Resultado: você entra na VPS sem digitar a senha root. Se a chave tem senha, o terminal pede a senha **da chave** (`Enter passphrase for key`), e não a da VPS.

## Se algo der errado
### A VPS continua pedindo a senha root
Causa: a chave pública não chegou na VPS ou as permissões da pasta estão erradas. Solução: entre na VPS com a senha e rode `chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys`. Depois, confira se a chave está lá com `cat ~/.ssh/authorized_keys`.

### "Permission denied (publickey)."
Causa: a VPS só aceita chave e a sua não confere, ou o SSH está usando outra chave. Solução: confira o `IdentityFile` no `~/.ssh/config`. Se não conseguir entrar de jeito nenhum, use o Console SSH do painel.

### "Bad owner or permissions on ~/.ssh/config"
Causa: o arquivo `config` no seu computador pode ser alterado por outros usuários. Solução: no Linux e no Mac, rode `chmod 600 ~/.ssh/config`.

### Troquei de computador e não consigo entrar
Causa: a chave privada ficou no computador antigo. Solução: entre com a senha root e repita este passo a passo no computador novo. Cada computador pode ter a sua chave; todas ficam juntas no `authorized_keys`.

## Relacionados
- Como acessar sua VPS por SSH pelo terminal (Linux, Windows e Mac)
- Como criar um usuário com sudo e entrar sem root na VPS via SSH
- Como acessar sua VPS pelo Console SSH do painel
- Como fazer o Claude Code acessar o SSH da sua VPS

---
Fonte: https://help.staycloud.com/artigos/como-acessar-a-vps-por-chave-ssh-em-vez-de-senha
