A política da empresa exige que algumas chaves ssh sejam armazenadas com segurança, por exemplo, no dispositivo USB dedicado. O uso de chaves não armazenadas na máquina host funciona sem falhas usando o gnupg com enable-ssh-support
, mesmo quando várias chaves são usadas:
Host example.com
HostName ssh.example.com
IdentityFile ~/.ssh/smartcard.pub
Host example.net
HostName git.example.net
IdentityFile ~/.ssh/another-smartcard.pub
Host example.org
HostName sftp.example.org
IdentityFile ~/.ssh/id_rsa.pub
IdentitiesOnly yes
PasswordAuthentication no
PubkeyAuthentication yes
No entanto, quando o hardware é desconectado, o gpg remove a chave do agente e as chamadas subseqüentes do ssh resultam em:
Enter passphrase for key '/home/user/.ssh/smartcard.pub':
Isso parece estranho, já que tanto o ssh quanto o ssh-agent devem estar bem cientes de que o arquivo contém apenas uma chave pública. Existe uma boa maneira de fazer com que o ssh falhe de forma grosseira se não tiver como acessar a chave especificada, em vez de pedir uma frase-senha (sem sentido)?
Soluções incompletas:
IdentitiesOnly
- ssh tentará todas as chaves utilizáveis conforme o esperado - mas causará problemas com servidores que limitem as tentativas de autenticação por sessão alias ssh='grep ^4096 <(ssh-add -l)' && ssh'
- funciona, mas causará dor de cabeça caso alguém queira descobrir por que a configuração do ssh dele está quebrada