Antes de começarmos, vamos esclarecer alguns pontos:
-
O
- macOS permitirá que você armazene a chave privada passphrases no keychain do macOS.
- ssh-agent (no macOS ou em qualquer sistema) contém a chave privada descriptografada na memória .
A distinção é importante para responder às suas perguntas.
- It seems like there are two options: ssh-agent or Keychain Access.
Não exatamente. Veja o esclarecimento acima. Se você usar a diretiva UseKeychain yes
no seu ~/.ssh/config
, qualquer programa que se conecte ao soquete ssh-agent
permitirá que ssh-agent
atinja o Keychain da passphrase para descriptografar sua chave privada. Se você também usar a diretiva AddKeysToAgent yes
, essa chave descriptografada será armazenada no agente para uso futuro. Também é útil para ver outra questão relacionada .
... If you need the convenience of temporarily storing passphrases, what is the standard?
Existe (no meu conhecimento) nenhuma maneira de o macOS armazenar as senhas temporariamente . No entanto, uma solução parcialmente satisfatória para quase o mesmo efeito pode ser obtida - veja a resposta à pergunta 3 abaixo.
- How can I identify and clear the passphrase for my default private key in Keychain Access? I see an unnamed private key, but I don't want to delete it without knowing for sure that it is my stored SSH key.
Se você abrir o Acesso às Chaves no seu Mac e pesquisar por ssh
, provavelmente não verá a frase secreta da chave ssh. A partir do macOS Sierra (10.12), a Apple moveu as chaves keychain ssh
que estavam armazenadas. Para vê-lo, você precisa selecionar "Exibir > > Mostrar itens invisíveis" e, em seguida, as entradas de chave secreta ssh serão visíveis.
Provavelmente, a "chave privada sem nome" que você estava vendo era outra chave RSA (ou DSA).
- What is the best option if I want to regularly clear any private key passphrases? I could use
ssh-add -D
under a cron job.
Embora você possa colocar ssh-add -D
em uma tarefa do cron e provavelmente faça o que você deseja, não removerá as passphrases das chaves. Isso apenas limparia a memória do ssh-agent
em execução de todas as chaves privadas descriptografadas . Se você tem UseKeychain yes
em sua configuração, ssh-agent
irá re-decifrar a chave novamente da próxima vez que for necessário (veja a resposta acima para a pergunta 1).
Uma alternativa para satisfazer o seu desejo implícito de não ter as chaves descriptografadas disponíveis o tempo todo é desativar as duas UseKeychain
e AddKeysToAgent
, como em:
Host *
UseKeychain no
AddKeysToAgent no
Em seguida, adicione manualmente as chaves à sua execução em ssh-agent
com vidas úteis limitadas usando a opção -t <lifetime>
para ssh-add
, como em:
ssh-add -t 4h ~/.ssh/id_rsa
Isso adicionará sua chave RSA (padrão) ao agente com uma duração de 4 horas. Após quatro horas, a chave será removida automaticamente.
Tanto quanto eu sei, não há nenhuma diretiva para seu usuário ~/.ssh/config
especificar o tempo de vida padrão de qualquer chave adicionada ao agente, nem existe uma maneira no sistema sshd_config
. No entanto, pode ser uma maneira de dizer ao macOS para iniciar o agente com um tempo de vida padrão usando a opção -t <lifetime>
. Para o intrépido, o arquivo plist do agente de ativação é armazenado em /System/Library/LaunchAgents/com.openssh.ssh-agent.plist
.
Outra abordagem mais antiga, possivelmente ainda relevante bloqueia o chaveiro enquanto dorme .