Autenticação não interativa com o gerenciador de chaves


Se você criptografar sua chave privada com uma senha, deverá inseri-la toda vez que usar a chave privada para autenticação. No entanto, você pode configurar o gerenciador de chaves ssh-agent para armazenar em cache as senhas. Então, cada vez que você usar o SSH, o gerenciador de chaves ssh-agent fornecerá a senha para você. Usar um gerenciador de chaves é conveniente e pode melhorar a segurança, fornecendo menos oportunidades para outras pessoas observarem sua senha.

O gerenciador de chaves ssh-agent pode ser configurado para iniciar automaticamente quando você fizer login. O ambiente gráfico de área de trabalho GNOME pode iniciar e configurar automaticamente o gerenciador de chaves ssh-agent. Se você fizer login em um ambiente de texto, deverá iniciar o programa ssh-agent manualmente para cada sessão. Inicie o programa ssh-agent com o seguinte comando:

[user@host ~]$ eval $(ssh-agent)
Agent pid 10155

Quando você inicia manualmente o comando ssh-agent, ele executa comandos de shell adicionais para definir variáveis de ambiente que são necessárias para uso com o comando ssh-add. Você pode carregar manualmente sua senha de chave privada para o gerenciador de chaves usando o comando ssh-add.

Os comandos de exemplo ssh-add a seguir adicionam as chaves privadas do arquivo padrão ~/.ssh/id_rsa e, em seguida, de um arquivo ~/.ssh/key-with-pass.

[user@host ~]$ ssh-add
Identity added: /home/user/.ssh/id_rsa (user@host.lab.example.com)
[user@host ~]$ ssh-add .ssh/key-with-pass
Enter passphrase for .ssh/key-with-pass: your_passphrase
Identity added: .ssh/key-with-pass (user@host.lab.example.com)

O comando ssh a seguir usa o arquivo de chave privada padrão para acessar sua conta em um servidor SSH remoto.

[user@host ~]$ ssh user@remotehost
Last login: Mon Mar 14 06:51:36 2022 from host.example.com
[user@remotehost ~]$

O comando ssh a seguir usa o acesso de chave privada ~/.ssh/key-with-pass para acessar sua conta no servidor remoto. A chave privada neste exemplo foi descriptografada anteriormente e adicionada ao gerenciador de chaves ssh-agent, portanto, o comando ssh não solicita a senha para descriptografar a chave privada.

user@host ~]$ ssh -i .ssh/key-with-pass user@remotehost
Last login: Mon Mar 14 06:58:43 2022 from host.example.com
[user@remotehost ~]$

Quando você faz o logout de uma sessão que usou um gerenciador de chaves ssh-agent, todas as senhas armazenadas em cache são apagadas da memória.

Referências