Como posso adicionar permanentemente minha chave privada SSH ao Keychain para que fique automaticamente disponível para o ssh?


419

Parece que ssh-add -K ~/.ssh/id_rsavocê carregará sua chave, mas solicitará a senha toda vez que você reiniciar.

Estou procurando uma solução que não exija que eu digite novamente a senha da chave entre os logins.


1
Você pode falar um pouco mais sobre quando a solicitação de senha será exibida? Eu pergunto porque eu tenho uma chave ssh para um servidor remoto, o que garanto que você não é igual à minha senha de login do Mac nem nada, e não tenho que digitar a senha da chave ssh há anos . Eu posso simplesmente abrir um terminal, digitar "ssh <server>" e estou lá. Acho que primeiro configurei essa chave no OSX 10.5. id_dsa, mas não acho que isso importe.
Michael H.

Minha id_rsachave tem uma senha.
22612

Também tenho o problema que resolvi isso há tanto tempo que não me lembro exatamente o que fiz. Mas acho que a ideia é não correr ssh-add, mas correr sshdiretamente. Você deve abrir uma janela que será a frase secreta da chave e com uma caixa de seleção para permitir que você a armazene em seu chaveiro.
Harald Hanche-Olsen

1
@ Sorin - o mesmo acontece com o meu! Eu tive que entrar uma vez, há muito tempo, e o Mac salvou para mim desde então. Espero que o conselho de Harald ajude.
Michael H.

Você quer dizer a senha do chaveiro (ou seja, sua senha de login) ou a senha da chave? Nesse caso, suas senhas estão definitivamente armazenadas no Keychain? Você pode verificar isso abrindo o Acesso ao chaveiro e procurando no chaveiro de login.
Mathew Salão

Respostas:


687

No OSX, o ssh-addcliente nativo possui um argumento especial para salvar a senha da chave privada no conjunto de chaves OSX, o que significa que seu login normal a desbloqueará para uso com o ssh. No OSX Sierra e versões posteriores, você também precisa configurar o SSH para sempre usar o chaveiro (consulte a Etapa 2 abaixo).

Como alternativa, você pode usar uma chave sem uma senha, mas se preferir a segurança certamente aceitável com esse fluxo de trabalho.

Etapa 1 - Armazene a chave no chaveiro

Apenas faça isso uma vez:

ssh-add -K ~/.ssh/[your-private-key]

Digite sua senha de chave e você não será solicitado novamente.

(Se você está na versão pré-Sierra do OSX, está pronto, a Etapa 2 não é necessária.)

Etapa 2 - Configure o SSH para sempre usar o chaveiro

Parece que o OSX Sierra removeu o comportamento conveniente de persistir suas chaves entre logons, e a atualização para ssh não usa mais o chaveiro por padrão. Por esse motivo, você será solicitado a digitar a senha de uma chave após a atualização e novamente após cada reinicialização.

A solução é bastante simples e está descrita neste comentário de tópico do github . Veja como você o configura:

  1. Verifique se você concluiu a Etapa 1 acima para armazenar a chave no chaveiro.

  2. Se você ainda não o fez, crie um ~/.ssh/configarquivo. Em outras palavras, no .sshdiretório em seu diretório home, fazer um arquivo chamado config.

  3. Nesse .ssh/configarquivo, adicione as seguintes linhas:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    Mude ~/.ssh/id_rsapara o nome do arquivo real da sua chave privada. Se você tiver outras chaves privadas em seu ~.sshdiretório, adicione também uma IdentityFilelinha para cada uma delas. Por exemplo, eu tenho uma linha adicional que lê IdentityFile ~/.ssh/id_ed25519uma segunda chave privada.

    Essa UseKeychain yesé a parte principal, que instrui o SSH a procurar no código-chave do OSX a senha da chave.

  4. É isso aí! Na próxima vez que você carregar qualquer conexão ssh, ele tentará as chaves privadas que você especificou e procurará sua senha no chaveiro OSX. Não é necessário digitar a senha.


2
Isso quase funcionou para mim. Meu chaveiro de "login" já tinha o bloqueio automático desativado, então a resposta de Matthew Sanabria não se aplicou. O uso de ssh-add -K ...chaves adicionadas ao agente ssh sem solicitar uma senha, mas apenas para a sessão atual. Após uma reinicialização, tive que reemitir o comando.
Poulsbo

4
@Poulsbo & @Abram - veja minha atualização, o Sierra alterou o comportamento automático e agora você precisa executar ssh-add -Amanualmente para carregar o chaveiro salvo. Algumas soluções possíveis mencionadas acima.
trisweb

3
@trisweb Obrigado pela dica. A solução de modificar o .ssh/configarquivo de joshbuchea parece promissora! Veja github.com/lionheart/openradar-mirror/issues/…
Poulsbo

2
@sorin, veja a resposta atualizada e deixe-me saber se você tem algum comentário. Obrigado!
trisweb

9
Funciona bem! No meu caso, eu precisava usar a Abandeira além Kdaquela para adicionar minhas chaves ao chaveiro e registrar a senha nele ( ssh-add -AK ~/.ssh/[your-private-key]). Obrigado!
precisa saber é o seguinte

22

Eu tive um problema semelhante, pois estava me perguntando TODA A VEZ a minha senha do pub-key.

Por sugestão do usuário "trisweb" acima, ativei essas opções em ~ / .ssh / config:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Mas ainda era solicitado toda vez que eu queria usar o ssh.

Eventualmente, ativei o "ssh -v" e encontrei esta linha de depuração:

debug1: key_load_private: senha incorreta fornecida para descriptografar a chave privada

Abri meu chaveiro em "Keychain Access.app", encontrei a chave chamada "SSH: /Users/username/.ssh/id_rsa" e abri-a.

Cliquei em "Mostrar senha" para divulgar a senha e, de fato, descobri que a senha no chaveiro era uma senha antiga.

Atualizei a senha no Acesso às Chaves e agora funciona sem senha.

Eu também poderia ter atualizado a senha com esta frase:

ssh-keygen -p -f ~ / .ssh / id_rsa


13

Você sempre solicita a senha, porque seu chaveiro de "login" está sendo bloqueado após inatividade e / ou suspensão ou, no caso, uma reinicialização. Existem duas maneiras de resolver isso para você.

  1. Altere as configurações do seu chaveiro de "login". Supondo que sua chave ssh esteja armazenada no chaveiro "login".

    • Acesso ao chaveiro aberto
    • Destaque o chaveiro "login"
    • Clique com o botão direito do mouse ou com a opção "chave de login"
    • Desmarque as caixas de seleção "Bloquear após X minutos de inatividade" e "Bloquear ao dormir".
  2. Gere outra chave SSH sem usar uma senha.

    • Terminal aberto.
    • Digite o comando: ssh-keygen -t rsa -b 4096 -C <comment> -f <.ssh/id_rsa>
    • -t é do tipo, -b é o tamanho da chave, -C é um comentário, -f arquivo de saída (deve primeiro criar diretórios)
    • Não defina uma senha.
    • Importe a chave SSH para o chaveiro "login" com ssh-add -K <path to ssh key>

Você não deve mais ser solicitado a fornecer uma senha de chaveiro.


2
Observe que, ao chamar ssh-addde dentro do SSH, security unlock-keychaindeve ser chamado primeiro. Além disso, não tive que criar os diretórios para o -fparâmetro. Infelizmente, eu ainda tinha que ligar security unlocl-keychainem sessões SSH para acessar o chaveiro de login, que solicita a senha cada vez ...
Ohad Schneider

2
O ponto principal é ter uma senha na tecla. Duvido que a geração de uma nova chave SSH seja útil para a pergunta.
Grey

7

Além disso, no macOS Sierra e HighSierra (não sei sobre versões anteriores), a execução ssh-add -Afará com que o agente carregue todas as chaves cujas senhas estão armazenadas no Keychain ... Tão útil


7

Para todos os itens acima, o meu problema parece ter sido porque eu estava duplicando o UseKeychain yes& AddKeysToAgent yesem todos os perfis / atalhos das teclas ssh. Atualizei meu ~/.ssh/configarquivo para declará-los apenas uma vez e agora todos são carregados no logon sem solicitar senhas na inicialização, por exemplo:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/foo
  IdentityFile ~/.ssh/bar

Host foo
  HostName foo.com
  User fooUser
  IdentityFile ~/.ssh/foo

Host bar
  HostName bar.com
  User barUser
  IdentityFile ~/.ssh/bar

-3

Adicione a chave pública em:

.ssh/known_hosts

A chave pública geralmente está ativada:

/home/user/.ssh/id_rsa.pub

espero que ajude


8
Eu acho que significa oauthorized_keys
Rene Larsen

De qualquer forma, isso não funciona se você tiver mais de uma chave!
sorin
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.