Estou fazendo uma pesquisa sobre esse tópico e posso dar algumas dicas, mas ainda não encontrei uma maneira de fazer isso funcionar.
Monkeysphere
Monkeysphere parece um projeto muito interessante, mas não consegui compilá-lo no Mac OS X sem entupindo meu pequeno espaço livre em disco com o MacPorts.
Usando o gpgkey2ssh
A primeira maneira que sugiro que você tente é gerar uma entrada compatível com authorized_keys a partir do seu ID de chave (por exemplo, BFB2E5E3) com:
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Aqui, adicionei-o ao meu localhost desde que executei um servidor ssh para fins de teste, mas é claro que você deve adicioná-lo ao host de destino ~/.ssh/authorized_keys
.
Em seguida, você precisa dizer ao SSH para usar a parte privada dessa chave durante a autenticação, mas simplesmente exportar uma versão blindada ASCII do par de chaves não funciona:
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost
Usando o gpg-agent
gpg-agent
tem a opção --enable-ssh-support
que permite usá-lo como substituto imediato do bem conhecido ssh-agent
.
Eu li sobre algumas pessoas tentando adicionar via ssh-add
sua chave GPG depois de lançar gpg-agent
desta maneira:
gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
Mas eu não acho que isso funcionará. A página do gpg-agent diz:
SSH Keys, which are to be used through the agent, need to be added to the gpg-agent initially through the ssh-add utility. When a key is added, ssh-add will ask for the password of the provided key file and send the unprotected key material to the agent; this causes the gpg-agent to ask for a passphrase, which is to be used for encrypting the newly received key and storing it in a gpg-agent specific directory.
Portanto, parece que gpg-agent
deve ser usado como uma medida adicional para proteger suas chaves SSH com uma criptografia GPG.
Convertendo uma chave GPG para o OpenSSH
Jérôme Pouiller em seu blog escreve que o utilitário Gpgsm pode exportar chaves e certificados no PCSC12; eles podem então ser usados pelo OpenSSH:
gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub
Mas ainda não encontrei uma forma de fazer gpgsm
aceitar meus keypairs gpg.
Outras coisas que você pode experimentar
O SSH tem uma opção -I
para especificar a biblioteca compartilhada PKCS # 11 ssh
deve usar para se comunicar com um token PKCS # 11 fornecendo a chave RSA privada do usuário.
ssh-keygen
pode usar a chave pública ou privada RFC4716 / SSH2, chaves públicas PEM PKCS8 e chaves públicas PEM para gerar uma chave privada (ou pública) compatível com OpenSSH usando as opções -i
e -m
.
Ainda não consigo encontrar uma maneira de juntar tudo.