Utilizar certificados SSH assinados por uma Autoridade Certificadora (CA) permite um controle centralizado e seguro dos acessos ao servidor. Veja abaixo como configurar:
1. Criar a Autoridade Certificadora (CA)
1 |
ssh-keygen -f ~/ca_ssh -C "CA para acesso SSH" |
ou para RSA
1 |
ssh-keygen -t rsa -b 4096 -f ~/ca_ssh -C "CA para acesso SSH" |
Isso gera os arquivos ca_ssh
(privada) e ca_ssh.pub
(pública).
2. Configurar o Servidor para Confiar na CA
1 2 3 4 5 6 7 8 9 10 |
# Copie a chave pública da CA para o servidor sudo nano /etc/ssh/ssh_known_hosts_ca # Adicione no sshd_config: TrustedUserCAKeys /etc/ssh/ssh_known_hosts_ca # Reinicie o serviço SSH sudo systemctl restart ssh |
3. Assinar a Chave Pública do Usuário
1 |
ssh-keygen -s ~/ca_ssh -I usuario1 -n usuario -V +52w ~/.ssh/id_rsa.pub |
Isso gera o certificado id_rsa-cert.pub
.
4. Configurar o Cliente
1 2 3 4 5 6 7 8 9 10 11 |
# Mova o certificado para ~/.ssh mv id_rsa-cert.pub ~/.ssh/ # Edite ~/.ssh/config Host servidor HostName ip_do_servidor User usuario IdentityFile ~/.ssh/id_rsa CertificateFile ~/.ssh/id_rsa-cert.pub |
5. Testar o Acesso
1 |
ssh servidor |
- Revogação centralizada
- Validade automática dos certificados
- Escalabilidade para múltiplos usuários
Essa abordagem é ideal para ambientes corporativos e servidores com múltiplos acessos.
🛠️ Automação com Script Bash
Aqui está um exemplo de script que você pode usar para:
- Criar uma chave para o usuário (se necessário).
- Assinar a chave com a CA.
- Gerar o certificado.
- Copiar o certificado para o cliente ou disponibilizar via SCP.
Automatizar a criação e assinatura de certificados SSH com uma CA facilita o gerenciamento de múltiplos usuários. Veja como fazer isso com um script Bash:
Estrutura sugerida de diretórios
1 2 3 4 5 6 7 8 9 10 11 |
/opt/ssh-ca/ ├── ca/ │ ├── ca_ssh # chave privada da CA │ └── ca_ssh.pub # chave pública da CA ├── users/ │ └── usuario1/ │ ├── id_rsa │ ├── id_rsa.pub │ └── id_rsa-cert.pub └── scripts/ └── gerar_certificado.sh |
Script Bash: gerar_certificado.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/bin/bash USUARIO=$1 VALIDADE="+52w" CA_DIR="/opt/ssh-ca/ca" USER_DIR="/opt/ssh-ca/users/$USUARIO" mkdir -p "$USER_DIR" cd "$USER_DIR" if [ ! -f "id_rsa" ]; then ssh-keygen -t rsa -b 4096 -C "$USUARIO@ssh" -f id_rsa -N "" fi ssh-keygen -s "$CA_DIR/ca_ssh" -I "$USUARIO" -n "$USUARIO" -V "$VALIDADE" id_rsa.pub echo "✅ Certificado gerado: $USER_DIR/id_rsa-cert.pub" |
Como Usar
1 |
sudo bash /opt/ssh-ca/scripts/gerar_certificado.sh usuario1 |
Depois, você pode copiar os arquivos para o cliente:
1 |
scp /opt/ssh-ca/users/usuario1/id_rsa* usuario1@cliente:/home/usuario1/.ssh/ |
- Economia de tempo
- Padronização dos certificados
- Facilidade na revogação e renovação
Essa abordagem é ideal para ambientes com múltiplos usuários e servidores que exigem controle rigoroso de acesso.
*Atualizado em 17 de outubro de 2025