O macOS continua pedindo minha senha ssh desde que atualizei para a Sierra

524

Costumava lembrar a frase secreta, mas agora está me perguntando a cada vez.

Eu li que preciso regenerar a chave pública com este comando, o que fiz:

ssh-keygen -y -f id_rsa > id_rsa.pub

mas isso não corrigiu nada.

Como posso fazer o macOS lembrar minha senha novamente?

    
por erwan 22.09.2016 / 11:21

12 respostas

1017

Na última versão do macOS (10.12.2), isso é fácil de corrigir. Basta editar seu ~/.ssh/config e ativar a opção UseKeychain :

Host *
    UseKeychain yes

Não há necessidade de alterar mais nada. Agora tudo funciona da maneira que costumava funcionar antes das atualizações mais recentes. Você não precisa adicionar chaves ao ssh-agent .

Editar: Você ainda pode precisar digitar sua senha uma vez. Se você não sabe, siga estas instruções para revelá-lo.

    
por 19.12.2016 / 13:04
170

Eu tive o mesmo problema. O keychain MacOS Sierra continua pedindo a frase secreta. Seu id_rsa deve ser criptografado com uma frase secreta para segurança. Em seguida, tente adicioná-lo ao keychain ssh-add -K ~/.ssh/id_rsa

Se a sua chave estiver em outra pasta que não seja ~/.ssh , substitua-a pela pasta correta.

Chaveiro agora conhece sua chave ssh e, esperançosamente, tudo funciona agora (o meu fez)

    
por 23.09.2016 / 14:53
65

Isso corrigiu meu problema semelhante:

/usr/bin/ssh-add -K

Isso armazena senhas no seu chaveiro.

Atualizar (obrigado @EasyCo): Isso funciona, mas não persiste entre as reinicializações. A solução da @jukka-suomela nesta página faz funcionar nas reinicializações. Você pode encontrar essa resposta aqui:

link

    
por 09.10.2016 / 16:39
39

Eu só tive que inserir a frase-senha correta uma vez e ela começou a funcionar. O problema era que eu não lembrava da minha senha SSH original, mas eu a recuperei seguindo estas etapas do Github:

  • No Finder, pesquise pelo aplicativo Acesso às Chaves.
  • No Acesso às Chaves, pesquise por SSH.
  • Clique duas vezes na entrada da sua chave SSH para abrir uma nova caixa de diálogo.
  • Diálogo de acesso às chavesNo canto inferior esquerdo, selecione Mostrar senha.
  • Você será solicitado a fornecer sua senha administrativa. Digite-o na caixa de diálogo "Acesso às Chaves".
  • Sua senha será revelada.
por 29.10.2016 / 19:16
18

Nenhuma das soluções acima funcionou após a instalação do Sierra sobre o El Capitan em um novo MacBook Pro. O Sierra by design não salva chaves SSH no chaveiro.

Duas soluções funcionaram para mim. Uma é adicionar o comando ssh-add -A &> /dev/null a ~ / .bash_profile. Toda vez que você abrir o terminal, este comando será executado (a parte &> /dev/null envia a saída do comando o arquivo / dev / null).

Uma solução mais complicada, mas ligeiramente mais tênue, é criar um plist com o comando que é executado toda vez que o SO é inicializado, como sugerido em Salvando chaves SSH no macOS Sierra keychain . Isso envolve o uso do Xcode para criar o arquivo.

    
por 27.09.2016 / 16:40
14

Uma correção é adicionar o seguinte ao seu arquivo ~ / .ssh / config:

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

Extraído de: link Veja também: link

    
por 16.12.2016 / 07:14
7

Esta manhã, tive o mesmo problema que você depois de atualizar para o Sierra. No meu caso, o arquivo id_rsa foi criptografado e, depois de descriptografar, estava funcionando como um encanto.

  1. Verifique se o arquivo id_rsa está criptografado com o seguinte comando: cat ~/.ssh/id_rsa | head -2
  2. Se a segunda linha disser Proc-Type: 4,ENCRYPTED , ela está criptografada e você pode tentar descriptografá-la
  3. Importante: faça um backup do seu arquivo id_rsa original! Use o comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Descriptografe sua chave privada com openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Remova a chave original ( rm ~/.ssh/id_rsa ) e substitua-a pela descriptografada: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Após esses passos, você poderá usar o ssh novamente.

    
por 22.09.2016 / 12:58
3

Também tive esse problema ao tentar implantar algum código usando o Capistrano . Muito frustrante. Aqui estão dois métodos que conheço para lidar com esse problema.

Método 1: Adicione todas as chaves conhecidas ao agente SSH.

Portanto, uma solução que encontrei é executar ssh-add com a opção -A , que adiciona todas as identidades conhecidas ao agente SSH usando quaisquer senhas armazenadas no seu chaveiro - assim:

ssh-add -A

Agora, isso funciona, mas não vai durar nas reinicializações. Então, se você não quiser mais se preocupar com isso, basta abrir o arquivo ~/.bash_profile do seu usuário assim:

nano ~/.bash_profile

Adicione essa linha ao final:

ssh-add -A 2>/dev/null;

Agora, quando você abre uma nova janela do Terminal, tudo deve ser bom!

Método 2: Adicione apenas chaves SSH que estão no keychain ao agente.

Portanto, embora a opção ssh-add -A deva funcionar na maioria dos casos básicos, encontrei um problema recentemente em que tinha 6-7 caixas Vagrant (que usam chaves SSH / identidades para acesso) configuradas em uma máquina em cima de mais id_rsa.pub comum no lugar.

Para encurtar a história, acabei sendo bloqueado de um servidor remoto devido a muitas tentativas falhas com base nas chaves / identidades SSH, pois o acesso ao servidor era baseado em uma senha e as chaves / identidades SSH eram chaves / identidades SSH. Então, o agente SSH tentou todas minhas chaves SSH, falhou e eu nem consegui acessar o prompt da senha.

O problema é que ssh-add -A adicionará arbitrariamente cada chave / identidade SSH ao agente, mesmo que não seja necessário fazê-lo; como no caso das caixas Vagrant.

Minha solução após muitos testes foi a seguinte.

Primeiro, se você tiver mais chaves / identidades SSH adicionadas ao seu agente do que o necessário, conforme mostrado em ssh-add -l , elimine-as do agente assim:

ssh-add -D

Feito isso, inicie o agente SSH como um processo em segundo plano da seguinte forma:

eval "$(ssh-agent -s)"

Agora, fica estranho e não sei bem por quê. Em alguns casos, você pode adicionar especificamente a ~/.ssh/id_rsa.pub key / identity ao agente da seguinte forma:

ssh-add ~/.ssh/id_rsa.pub

Digite sua senha, tecle Return e você deve estar pronto.

Mas em outros casos, basta executar isso para obter a chave / identidade adicionada:

ssh-add -K

Se tudo isso funcionar, digite ssh-add -l e você verá uma única chave / identidade SSH listada.

Tudo bem? Agora abra seu .bash_profile :

nano ~/.bash_profile

E adicione essa linha ao final da página; comentar ou remover a versão -A se você tiver isso em vigor:

ssh-add -K 2>/dev/null;

Isso permitirá que a chave / identidade do SSH seja recarregada no agente SSH em cada inicialização / reinicialização.

ATUALIZAÇÃO: A Apple adicionou uma opção UseKeychain às opções de configuração SSH abertas e também considera ssh-add -A uma solução.

A partir do macOS Sierra 10.12.2, a Apple (suponho) adicionou uma opção UseKeychain config para as configurações do SSH. Verificar a página do manual (via man ssh_config ) mostra as seguintes informações:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct.  The
        argument must be ''yes'' or ''no''.  The default is ''no''.

Qual resume a Apple a ver a solução como adicionando ssh-add -A ao seu .bash_profile como explicado neste bilhete do Radar Aberto ou adicionando UseKeychain como uma das opções em um usuário ~/.ssh/config .

    
por 02.01.2017 / 01:05
3

Jukka Suomela 's answer está correto, mas se você estiver usando openssh instalado de homebrew , você também precisará desinstalá-lo com:

brew remove openssh

... para voltar ao openssh padrão do sistema, porque o homebrew não suporta a entrada UseKeychain ssh config.

    
por 28.01.2017 / 09:58
2

Tentei várias respostas aqui, mas ainda estava tendo problemas com a passagem de chaves remotas (por exemplo, ao usar o capistrano). Para resolvê-lo, eu li a technote da apple e fiz este meu arquivo de configuração. Não mais pedindo minha senha!

link

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes
    
por 15.02.2017 / 03:15
1

Eu tentei todas as soluções sugeridas aqui, mas não tenho chaves instaladas no meu Mac.

Adicionando à linha seguinte no topo do arquivo .ssh/config na máquina local e na máquina remota funcionou para mim.

PubkeyAcceptedKeyTypes=+ssh-dss 
    
por 02.01.2017 / 00:56
1

Você precisa de um arquivo .plist adicionado a ~/Library/LaunchAgents/ para executar ssh-add -A em todas as inicializações do macOS.

Existe um único comando que faz isso (de SSH-keys-in-macOS-Sierra- keychain ) que é:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
    
por 10.12.2016 / 22:04

Tags