O que é
A chave SSH é uma alternativa à senha para entrar como root na VPS. Você gera um par: a chave privada, que fica só no seu computador, e a chave pública, que vai para a VPS. O servidor aceita quem tem a privada correspondente. É mais seguro que senha (não há o que adivinhar) e você não digita a senha de root a cada conexão.
Há dois jeitos de usar chave na WFree:
- Informar no pedido: cole a chave pública no campo "Chave SSH pública" do pedido, e a VPS já nasce com ela.
- Adicionar depois: em uma VPS já em uso, você acrescenta a chave em
/root/.ssh/authorized_keys.
Nos dois casos, o login por senha no SSH continua ligado. Se quiser que o SSH aceite só a chave, desligue a senha você mesmo (passo 5). A senha de root continua valendo no console da área do cliente.
Como fazer
- Gere o par no seu computador (Terminal no Linux e no macOS; PowerShell no Windows 10/11):
ssh-keygen -t ed25519 -C "seu-nome"
Aceite o local padrão e defina uma frase-senha (ela protege a chave se o computador for perdido). Serão criadosid_ed25519(a privada, nunca compartilhe) eid_ed25519.pub(a pública). Veja a pública comcat ~/.ssh/id_ed25519.pub: é uma linha só, começando comssh-ed25519. - Na contratação: cole essa linha inteira no campo "Chave SSH pública" do pedido.
- Em uma VPS que já existe: entre por senha (SSH ou console) e rode:
mkdir -p /root/.ssh && chmod 700 /root/.ssh echo "COLE_AQUI_A_LINHA_DA_CHAVE_PUBLICA" >> /root/.ssh/authorized_keys chmod 600 /root/.ssh/authorized_keys
No Linux e no macOS, o comandossh-copy-id root@IP-DA-VPS, rodado no seu computador, faz o mesmo. - Teste em outra janela, sem fechar a sessão atual:
ssh root@IP-DA-VPS. Se entrar sem pedir a senha de root (só a frase-senha da chave, se houver), funcionou. - Desligue o login por senha (opcional, só depois do teste):
- Procure a opção em todos os arquivos de configuração do SSH:
grep -ri passwordauthentication /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
- Deixe
PasswordAuthentication noem/etc/ssh/sshd_config. Se algum arquivo dentro de/etc/ssh/sshd_config.d/tiverPasswordAuthentication yes, troque paranoali também: esses arquivos são lidos antes e valem primeiro. - Confira a configuração e reinicie o SSH:
sshd -t && systemctl restart ssh
- Confirme:
sshd -T | grep -i passwordauthenticationdeve mostrarpasswordauthentication no. Teste de novo em outra janela antes de fechar a sessão atual.
- Procure a opção em todos os arquivos de configuração do SSH:
Se der errado
- "Permission denied (publickey)": a pública na VPS não confere com a privada usada. Confira se colou a linha inteira, sem quebras, e indique a chave:
ssh -i ~/.ssh/id_ed25519 root@IP-DA-VPS. - "Too many authentication failures": o SSH da VPS aceita até 4 tentativas por conexão, e o seu computador pode gastá-las oferecendo outras chaves. Indique só a certa:
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 root@IP-DA-VPS. - Fiquei trancado para fora: abra o console na área do cliente (serviço da VPS > Console); ele aceita a senha de root. Corrija o
authorized_keysou volte oPasswordAuthenticationparayes(no mesmo arquivo em que você trocou parano) e rodesshd -t && systemctl restart ssh. - Perdi a chave privada: gere um par novo (passo 1). Se o login por senha no SSH continua ligado, entre por SSH com a senha de root e adicione a chave nova (passo 3). Se você o desligou, entre pelo console, volte
PasswordAuthenticationparayes, rodesystemctl restart sshe então entre por SSH com a senha para adicionar a chave. Se também não sabe a senha, defina outra pela opção de trocar a senha de root no painel da VPS (artigo "Trocar a senha de root da VPS"). - Continua pedindo senha depois de adicionar a chave: confira as permissões (
700na pasta,600no arquivo) e leia o registro comjournalctl -u ssh. - A chave parou de funcionar depois de restaurar ou reinstalar: restaurar um backup traz de volta as chaves SSH daquela data, e a reinstalação cria um sistema novo. Confira o
authorized_keyse adicione a chave de novo, se faltar. - Muitas tentativas erradas: o fail2ban bloqueia o seu IP por 1 hora depois de 5 erros. Espere ou desbloqueie pelo console com
fail2ban-client set sshd unbanip SEU_IP.
Quando abrir um ticket
Se nem o SSH nem o console respondem, ou se o comportamento não bate com o descrito aqui, abra um ticket em https://wfree.com.br/clientes (Suporte > Abrir Ticket). Informe o hostname da VPS, o comando usado e a saída de ssh -v root@IP-DA-VPS. A chave pública pode ir no ticket; a chave privada e a senha, nunca. A WFree não pede senha.