This post is also available in:
Jobs agendados no Oracle Enterprise Manager falhavam em vários hosts com o erro abaixo:
LOG: Local Authentication Failed...Attempt PAM authentication...PAM failed with error: Authentication failureO problema aparecia em ambientes onde o usuário oracle possui senhas diferentes por servidor — situação comum em empresas que não padronizaram o gerenciamento de credenciais.
A solução elimina a dependência de senha: uma única Named Credential baseada em SSH Key funciona para todos os hosts monitorados.
Por que acontece
O OEM tenta autenticar via PAM (Pluggable Authentication Module) usando a senha armazenada na Named Credential. Quando a senha do usuário oracle no host alvo não corresponde à credencial cadastrada, a autenticação falha.
Em ambientes com dezenas de hosts e histórico de rotação de senhas inconsistente, manter Named Credentials baseadas em senha é inviável.
Solução: Named Credential com SSH Key
A autenticação por chave pública/privada elimina o problema: o OMS usa sua chave privada para autenticar, e cada host alvo precisa ter a chave pública no authorized_keys do usuário correspondente.
Passo 1 — Gerar o par de chaves no OMS
Execute como usuário oracle no servidor OMS:
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""Se já existir um par de chaves, apenas confirme:
ls ~/.ssh/id_rsa ~/.ssh/id_rsa.pubPasso 2 — Distribuir a chave pública nos hosts alvo
ssh-copy-id -i ~/.ssh/id_rsa.pub oracle@<hostname>
ssh-copy-id -i ~/.ssh/id_rsa.pub root@<hostname>Repita para cada host monitorado pelo OEM.
Passo 3 — Corrigir o ~/.ssh/config no OMS
Se houver entradas no ~/.ssh/config, verifique se o IdentityFile está apontando para a chave correta:
Host *.exemplo.com.br
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes⚠️ O parâmetro
IdentitiesOnly yesé importante. Sem ele, o SSH tenta todas as chaves disponíveis antes de falhar, o que pode disparar o bloqueioToo many authentication failuresem hosts comMaxAuthTriesrestrito.
Passo 4 — Criar Named Credential para oracle
Acesse: Setup → Security → Named Credentials → Create
| Campo | Valor |
|---|---|
| Credential Name | ORACLE\_SSH\_KEY |
| Authenticating Target Type | Host |
| Credential Type | SSH Key Credentials |
| Scope | Global |
| UserName | oracle |
| SSH Private Key | conteúdo de ~/.ssh/id_rsa |
| SSH Public Key | conteúdo de ~/.ssh/id_rsa.pub |
| Run Privilege | None |
⚠️ Use sempre Scope: Global. Credenciais com Scope Target não aparecem na lista de seleção em jobs multi-host.
Passo 5 — Criar Named Credential para root
Repita o processo com os seguintes valores:
| Campo | Valor |
|---|---|
| Credential Name | ROOT\_SSH\_KEY |
| UserName | root |
| SSH Private Key | conteúdo de ~/.ssh/id_rsa |
| SSH Public Key | conteúdo de ~/.ssh/id_rsa.pub |
💡 As chaves são as mesmas do usuário oracle. O que determina o acesso é a presença da chave pública no
authorized_keysdo usuário correto em cada host.
Passo 6 — Configurar como Preferred Credential
Setup → Security → Preferred Credentials → Target Type: Host → Default Preferred Credentials → Set Credentials → selecione Named → ORACLE_SSH_KEY → Save
Passo 7 — Testar
Setup → Security → Named Credentials → selecione ORACLE_SSH_KEY → Test → selecione um host alvo.
Resultado esperado: Succeeded
Resultado
| Antes | Depois |
|---|---|
PAM authentication failure em jobs | Autenticação via chave SSH |
| Senha diferente por servidor causava falha | Independente de senha |
| Credencial individual por host | Uma credencial Global para todos os hosts |
| Jobs falhavam em múltiplos targets | Jobs executam em todos os hosts |
✅ Compatibilidade: procedimento testado no OEM 13c e OEM 13.5. O fluxo de criação de Named Credentials é equivalente nas duas versões.
Referências
- Oracle Documentation — Managing Named Credentials
- Oracle Support — Doc ID 1585459.1 (Named Credentials with SSH Key)
