Como configurar a autenticação SSH baseada em chaves com Redtrust
Visão geral
Este guia explica como autenticar em um servidor SSH usando uma chave armazenada no Redtrust em vez de uma chave local.
Contexto
Em uma configuração SSH padrão, o cliente usa um arquivo de chave privada local (por exemplo, id_rsa ou id_ed25519) para se autenticar em um servidor. O servidor verifica a chave pública correspondente armazenada no arquivo authorized_keys.
Quando você usa Redtrust, a chave privada não é armazenada localmente. Em vez disso, o OpenSSH carrega o provedor PKCS#11 do Redtrust (RTPKCS11.dll) para acessar com segurança a chave privada no Redtrust. Do ponto de vista do servidor, a autenticação funciona como uma autenticação padrão por chave pública. A única diferença é como o cliente acessa a chave privada.
Antes de começar
Para seguir este guia, você precisa do seguinte:
- Um certificado enviado para o Redtrust.
- Uma política que permita o uso do cliente SSH (
ssh.exe). - Um servidor SSH que permita autenticação por chave pública.
- Para Windows Server, você deve ter o OpenSSH instalado e o serviço iniciado.
Se a instalação do OpenSSH falhar, verifique se a máquina tem o patch mais recente do sistema operacional. Para isso, execute sconfig, selecione Download and install updates e instale qualquer atualização pendente.
Obter a chave pública SSH
- Acesse o console de administração.
- Vá para Certificates e localize o que você deseja usar.
- Vá ao menu Actions > Download certificate > Download .pub (SSH).
O conteúdo do arquivo .pub é a chave pública SSH usada nas etapas abaixo.
Configurar o servidor SSH
- Windows server
- Linux server
Por padrão, a instalação do OpenSSH Server já permite login usando autenticação por chave pública. Você deve adicionar a chave pública e associá-la à conta de usuário.
No Windows, o OpenSSH trata contas de administrador de forma diferente e armazena as chaves autorizadas em um arquivo de todo o sistema dentro de ProgramData.
Para usuários administradores
-
Crie o arquivo
administrators_authorized_keys.New-Item -Force -ItemType File -Path C:\ProgramData\ssh\administrators_authorized_keys -
Adicione a chave pública que você baixou do Redtrust à lista de chaves aceitas.
Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value "SUA_CHAVE_SSH" -
Configure as permissões do arquivo.
Get-Acl C:\ProgramData\ssh\ssh_host_rsa_key | Set-Acl C:\ProgramData\ssh\administrators_authorized_keys -
Reinicie o serviço.
Restart-Service sshd
Para usuários não administradores
-
Crie o arquivo
authorized_keys.New-Item -Force -ItemType File -Path C:\Users\SEU_USUÁRIO\.ssh\authorized_keys -
Adicione a chave pública à lista de chaves aceitas.
Add-Content -Force -Path C:\Users\SEU_USUÁRIO\.ssh\authorized_keys -Value "SUA_CHAVE_SSH" -
Configure as permissões do arquivo.
Get-Acl C:\Users\SEU_USUÁRIO | Set-Acl C:\Users\SEU_USUÁRIO\.ssh
Get-Acl C:\Users\SEU_USUÁRIO | Set-Acl C:\Users\SEU_USUÁRIO\.ssh\authorized_keys -
Reinicie o serviço.
Restart-Service sshd
Adicionar a chave pública
-
Acesse o servidor com um usuário com privilégios sudo.
-
Se o diretório
.sshnão existir, crie-o manualmente.mkdir -p ~/.ssh -
No diretório
.ssh, crie o arquivoauthorized_keyse abra-o:touch ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys -
Cole a chave pública do Redtrust que você baixou no arquivo (ela terá uma aparência semelhante a
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...). -
Defina as permissões corretas:
chmod 600 ~/.ssh/authorized_keysavisoO SSH rejeitará a autenticação se as permissões do diretório e dos arquivos forem permissivas demais.
Configurar o SSH para permitir autenticação por chave pública
Na maioria das distribuições Linux, a autenticação por chave pública está habilitada por padrão.
-
Edite o arquivo de configuração do servidor SSH:
sudo vim /etc/ssh/sshd_config -
Verifique se a autenticação por chave pública está habilitada:
PubkeyAuthentication yes -
Reinicie o serviço SSH:
sudo systemctl restart sshEm algumas distribuições (por exemplo, CentOS/RHEL), use:
sudo systemctl restart sshd
Depois que o servidor SSH confiar na chave pública, configure o cliente SSH para usar a chave privada armazenada no Redtrust.
Configurar o cliente SSH
- Windows client
- Linux client
Depois que o servidor SSH aceitar autenticação por chave pública, configure o cliente SSH do Windows para usar a chave armazenada no Redtrust.
-
Conecte o agente do Redtrust.
-
Crie um arquivo de configuração SSH chamado
config.C:\Users\SEU_USUÁRIO\.ssh\configSe o diretório
.sshnão existir, crie-o manualmente. -
Adicione a seguinte linha:
PKCS11Provider "C:\Windows\System32\RTPKCS11.dll"Isso indica ao OpenSSH que use o provedor PKCS#11 do Redtrust para acessar as chaves privadas armazenadas com segurança no Redtrust.
-
Conecte-se ao servidor:
ssh SEU_USUÁRIO@IP_DO_SERVIDOR
Se o servidor confiar na chave pública correspondente, a autenticação será realizada com sucesso sem usar um arquivo de chave privada local nem a senha do servidor.
Se o cliente solicitar um PIN PKCS#11 do Redtrust, verifique se o agente está em execução.
-
Se o diretório
.sshnão existir, crie-o manualmente.mkdir -p ~/.ssh -
Na sua máquina cliente, edite o arquivo de configuração SSH.
vim ~/.ssh/config -
Adicione o seguinte ao arquivo de configuração:
Host meu-servidor
HostName IP_DO_SERVIDOR
User SEU_USUÁRIO
PKCS11Provider /usr/lib/libkeyfactorpkcs11.soSubstitua o caminho se o módulo estiver instalado em um local diferente.
-
Conecte-se ao servidor:
ssh meu-servidor
Essa configuração indica ao OpenSSH que use o provedor PKCS#11 do Redtrust para acessar as chaves privadas armazenadas com segurança no Redtrust.
No Windows, o Git pode usar sua própria implementação de SSH em vez do cliente OpenSSH incluído no sistema operacional. Configure o Git para usar o cliente OpenSSH do Windows:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
Depois dessa configuração, o Git usa o mesmo cliente SSH que carrega o provedor PKCS#11 do Redtrust.
No Linux, o Git usa o cliente SSH do sistema por padrão, portanto não é necessária configuração adicional.