O Acesso ao MacOS Keychain mantém a senha SSH indefinidamente

0

Por conveniência, gostaria que o MacOS mantivesse minha senha RSA, mas não indefinidamente (por questões de segurança). Acredito que o SSH usará o Keychain Access com essa configuração SSH

Host *
     UseKeychain true

E acredito que ele usará ssh-agent com essa configuração:

Host *
     AddKeysToAgent yes

Algumas perguntas:

  1. Parece que há duas opções: ssh-agent ou Acesso às chaves . Se você precisa da conveniência de temporariamente armazenar senhas, qual é o padrão?
  2. Como posso identificar e limpar a frase secreta da minha chave privada padrão no Acesso às Chaves? Eu vejo uma chave privada sem nome, mas não quero excluí-la sem ter certeza de que é minha chave SSH armazenada
  3. Qual é a melhor opção se eu quiser limpar regularmente todas as senhas de chave privada? Eu poderia usar ssh-add -D em um cron job
por Charlie Hileman 11.06.2018 / 22:35

1 resposta

1

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.

  1. 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.

  1. 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).

  1. 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 .

    
por 13.06.2018 / 22:01