POP HOSTING

Como alterar a porta do SSH no Ubuntu, Debian, AlmaLinux e Rocky imprimir

  • porta ssh, alterar porta ssh, sshd_config, ssh.socket, selinux, firewalld, ufw, csf
  • 0

Como alterar a porta do SSH no Ubuntu, Debian, AlmaLinux e Rocky sem ficar trancado fora: firewall, SELinux, ssh.socket do Ubuntu 24.04 e teste.

  • Tempo: 15 min
  • Nível: Intermediário
  • Vale para: Ubuntu 22.04 e 24.04, Debian 12, AlmaLinux e Rocky Linux 8 e 9, servidores cPanel com CSF
  • Atualizado: outubro de 2026

Trocar a porta 22 por outra tira o servidor do alvo da maioria dos robôs que testam senhas o dia inteiro e deixa os logs mais limpos. Não substitui a segurança de verdade (chave SSH e fail2ban), mas ajuda. O risco está na ordem: se a porta nova não estiver liberada no firewall ou no SELinux quando o SSH reiniciar, você perde o acesso. Por isso o procedimento abaixo mantém a porta 22 aberta até a nova ser testada.

Antes de começar

  • Acesso root ou com sudo, e de preferência acesso ao console do servidor como plano B.
  • Escolha a porta: um número entre 1024 e 65535 que nenhum serviço use. Nos exemplos, 2222. Em servidor cPanel, evite as portas do próprio cPanel (2082 a 2096 e outras; veja portas usadas pelo cPanel).
  • Confira se ela está livre; o comando abaixo não pode mostrar nada:
    sudo ss -tlnp | grep ':2222 '

Passo 1: libere a porta nova no firewall

Libere a nova porta sem fechar a 22. Use o bloco do firewall que o seu servidor tem:

UFW (Ubuntu e Debian):

sudo ufw allow 2222/tcp

firewalld (AlmaLinux e Rocky):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

CSF (comum em servidores cPanel): edite /etc/csf/csf.conf, acrescente 2222 à lista da linha TCP_IN (e da TCP6_IN, se o servidor usa IPv6) e recarregue:

sudo csf -r

Se houver um firewall externo, no painel do provedor ou na rede, libere a porta nele também.

Passo 2: avise o SELinux (só AlmaLinux e Rocky)

Com o SELinux ativo, o SSH só pode usar portas registradas para ele. Veja o estado com getenforce: se responder Enforcing ou Permissive, registre a porta:

sudo dnf install policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 2222
sudo semanage port -l | grep ssh_port_t

A última linha deve listar 2222, 22. No Ubuntu e no Debian o SELinux não vem ativo; pule este passo.

Passo 3: configure a porta no SSH

Abra o arquivo de configuração:

sudo nano /etc/ssh/sshd_config

Procure a linha #Port 22, tire o # e acrescente a porta nova logo abaixo. As duas ficam ativas durante o teste:

Port 22
Port 2222

Confira se não há outra linha Port nos arquivos complementares e valide a sintaxe (sem resposta = tudo certo):

sudo grep -ri '^port' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/
sudo sshd -t

Passo 4: aplique a mudança

Aqui cada sistema tem um comando diferente.

Ubuntu 24.04: o SSH usa ativação por socket do systemd, e quem escuta a porta é o ssh.socket. Confirme com systemctl is-active ssh.socket; se responder active, aplique assim (só reiniciar o serviço ssh não troca a porta):

sudo systemctl daemon-reload
sudo systemctl restart ssh.socket

Ubuntu 22.04 e Debian 12 (ou Ubuntu 24.04 com o ssh.socket inativo):

sudo systemctl restart ssh

AlmaLinux e Rocky Linux:

sudo systemctl restart sshd

Confira se as duas portas estão escutando:

sudo ss -tlnp | grep -E ':(22|2222) '
Dica: as sessões já abertas não caem quando o SSH reinicia. Mantenha a sua aberta até o fim do procedimento.

Passo 5: teste a porta nova

Em outra janela do terminal, no seu computador:

ssh -p 2222 [email protected]

Se entrar, siga para o último passo. Se não, a porta 22 continua funcionando e você corrige sem pressa (veja os problemas comuns abaixo).

Passo 6: feche a porta 22

  1. Apague a linha Port 22 do /etc/ssh/sshd_config, rode sudo sshd -t e aplique de novo com o comando do passo 4.
  2. Remova a regra antiga do firewall. UFW: sudo ufw delete allow OpenSSH (ou sudo ufw delete allow 22/tcp, conforme foi criada). firewalld: sudo firewall-cmd --permanent --remove-service=ssh e sudo firewall-cmd --reload. CSF: tire o 22 do TCP_IN e rode sudo csf -r.
  3. Teste mais uma vez numa janela nova antes de fechar a sessão antiga.

Depois da troca

  • fail2ban: se ele protege o SSH, informe a porta nova (port = 2222) na seção [sshd] do /etc/fail2ban/jail.local e reinicie o fail2ban. Sem isso, os bloqueios vão para a porta errada. Veja como proteger o SSH com fail2ban.
  • Programas que usam SSH: o scp e o sftp usam -P 2222 (P maiúsculo); no FileZilla, no PuTTY e no WinSCP, preencha o campo de porta.
  • Atalho no seu computador: acrescente ao ~/.ssh/config e conecte só com ssh meuservidor:
    Host meuservidor
        HostName 203.0.113.10
        Port 2222
        User usuario

Nas versões 22.10 a 23.10 do Ubuntu, já fora de suporte, a porta era definida direto no ssh.socket. Se o seu servidor ainda usa uma delas, atualize para a 24.04.

Problemas comuns

Connection refused na porta nova

O SSH não está escutando nela. No Ubuntu 24.04, quase sempre faltou o daemon-reload com o restart ssh.socket. Confira com sudo ss -tlnp.

Connection timed out na porta nova

O firewall está bloqueando. Revise o passo 1, inclusive o firewall externo do provedor.

Bind to port 2222 on 0.0.0.0 failed: Permission denied

Aparece em journalctl -u sshd no AlmaLinux e no Rocky: o SELinux barrou a porta. Faça o passo 2 e reinicie o sshd.

ValueError: Port tcp/2222 already defined

A porta já está registrada no SELinux para outro serviço. Troque o -a por -m no comando do semanage, ou escolha outra porta.

Fiquei sem acesso nenhum

Entre pelo console do servidor, volte o Port 22 e reinicie o SSH. Se o servidor é da POP Hosting e você não tem console, abra um chamado pela Área do Cliente.

Precisa de um servidor com acesso root completo? Veja os servidores dedicados da POP Hosting, com suporte em português.

Esta resposta lhe foi útil?
« Retornar