Questão O macOS continua pedindo minha senha ssh desde que eu atualizei para a Sierra


Costumava lembrar a senha, 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 não consertou nada.

Como posso fazer o macOS lembrar minha senha novamente?


500


origem


Estou com um comportamento relacionado: anteriormente, a caixa de diálogo do conjunto de chaves surgia para solicitar a senha. Agora, recebo o prompt normal do console SSH. Algum registro de programa auxiliar provavelmente desapareceu. - Daniel B
Faz anos desde que eu gerava meu id_rsa e nunca usei uma senha e uso isso para o ssh em muitos servidores. Eu realmente tenho uma senha, ou é apenas o que Sierra acha que eu deveria? Note que $ cat ~ / .ssh / id_rsa | head -2 ----- INICIAR CHAVE PRIVADA RSA ----- Proc-Type: 4, ENCRYPTED - Joe Murray
duplicata de apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, você parece estar ativo por aqui. A resposta abaixo resolve seu problema? - tedder42
Alguma das respostas soluciona seu problema? Nesse caso, você deve considerar aceitá-lo. - Shafik Yaghmour


Respostas:


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

Host *
    UseKeychain yes

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


Editar: Talvez você ainda precise inserir sua senha uma vez. Se você não sabe, siga estas instruções para revelá-lo.


983



Isso absolutamente funcionou para mim. Tudo abaixo parece mais complicado que essa correção. - Br.Bill
Note o Host * bloco deve (quase) sempre ser colocado na parte inferior do ~/.ssh/config Arquivo. Quando ssh está procurando configurações usa o primeiro valor que encontra. Assim, ao colocar o bloco de curingas no final, ele age como um conjunto de padrões; você pode substituir as configurações de hosts específicos, especificando-os anteriormente no arquivo. - Molomby
Isso funcionou para mim também, mas eu tive que digitar a senha corretamente uma vez. Há sim outra resposta que descreve como você pode ver a senha se não se lembrar dela. - FGreg
Se o arquivo de configuração não existir, criar um e adicionar isso também funcionará. - wynshaft
Você não precisa do Host * posição. Basta anexar a linha única UseKeychain yes no topo da sua .ssh/config se você deseja que isso se aplique a todos os hosts. - sj26


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 chaveiro ssh-add -K ~/.ssh/id_rsa

Se a sua chave estiver em outra pasta ~/.ssh então substitua pela pasta correta.

Chaveiro agora sabe sua chave ssh e, espero, tudo funciona agora (o meu fez)


164



Isso funciona, mas parece não persistir quando eu reiniciar meu computador. Alguém mais com o mesmo problema? - joshua.paling
Sim, o mesmo problema aqui. @ joshua.paling - kingkool68
@ joshua.paling, kingkool68 - A Apple removeu a capacidade de lembrar suas chaves SSH durante a reinicialização para se adequar ao comportamento convencional do OpenSSH. Veja esta pergunta para outras formas de obter a mesma funcionalidade: apple.stackexchange.com/questions/254468/… - Evan Pon
@EvanPon Mas isso não funcionará com chaves criptografadas, não é? - Konrad Rudolph
@KonradRudolph funciona para mim. Chamando ssh-add com o -A opção irá procurar no keychain do MacOS por quaisquer senhas para as identidades em questão. Eu acredito que ele irá perguntar se as senhas não estão no chaveiro. - Evan Pon


Isso corrigiu meu problema semelhante:

/usr/bin/ssh-add -K

Isso armazena senhas em seu chaveiro.

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

https://superuser.com/a/1158050/234685


62



Essa é a única coisa que funciona. - cryptic0
Eu não precisei criar o arquivo .ssh / .config ao usar esta solução. - Shai
Isso funcionou para mim. Não há necessidade de editar o arquivo host. Eu estou na Sierra. - cchiera
Isso funcionou para mim no Mac OS Sierra. - Dayron Gallardo
Como dito anteriormente, isso funciona, mas não persiste entre as reinicializações. A solução da @ukuk-suomela funciona em reinícios. - EasyCo


Eu só tive que digitar a 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.
  • Em Acesso às Chaves, pesquise por SSH.
  • Clique duas vezes na entrada da sua chave SSH para abrir uma nova caixa de diálogo.
  • Caixa de 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.

38



Não funciona. Terminal ainda diz "senha ruim" - Jayden Lawson


Nenhuma das soluções acima funcionou após a instalação do Sierra sobre o El Capitan em um novo MacBook Pro. 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 para ~ / .bash_profile. Toda vez que você abrir o terminal, este comando será executado (o &> /dev/null parte 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 sistema operacional é inicializado, como sugerido em Salvando chaves SSH no macOS Sierra keychain. Isso envolve o uso do Xcode para criar o arquivo.


18



Esta parece ser a resposta oficial da Apple também - veja openradar.appspot.com/27348363 - Nick Maynard
A melhor solução até agora para mim. Estou usando o Mac OSX Sierra (10.12.2). - zyc


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

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

Tirado de: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Veja também: https://apple.stackexchange.com/a/264974/3810


13



Até agora, em nenhuma das respostas, alguém mencionou o Bad configuration option: usekeychain erro eu recebo com UseKeychain (no entanto é capitalizado). Mas eu estava capaz de fazê-lo funcionar, removendo apenas essa linha e deixando AddKeysToAgent e IdentityFile (você ainda tem que digitar a senha pela primeira vez). Isso é com o macOS Sierra 10.12.6. - William Turrell
isso funciona bem quando estou no terminal e uso o comando ssh, mas outros aplicativos, como o WebStorm, que usam seu próprio terminal, não aceitam essa configuração até eu usar pela primeira vez um comando ssh no terminal regular. então funciona em todos os lugares, alguma sugestão? - santiago arizti
@WilliamTurrell Se isso ainda acontecer, digite which ssh para garantir que você está usando /usr/bin/ssh e não uma versão do Fink ou MacPorts, que estaria sob algo como /usr/local/bin/ssh ou /opt/local/bin/ssh - Stefan Lasiewski


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

  1. Verifique se o seu id_rsa O arquivo é criptografado com o seguinte comando: cat ~/.ssh/id_rsa | head -2
  2. Se a segunda linha diz Proc-Type: 4,ENCRYPTED, é criptografado e você pode tentar descriptografá-lo
  3. Importante: faça um backup do seu original id_rsa Arquivo! 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 substituí-lo pelo decifrado: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Após essas etapas, você poderá usar o ssh novamente.


7



Enquanto isso é uma solução alternativa, eu não acho que realmente resolve o problema do OP. - Daniel B
Isso funciona para mim. @ DanielB, qual é o problema em fazer isso? - Dag Høidahl
@ DagHøidahl A chave não será mais criptografada. Pode ser roubado com direitos de usuário regulares, portanto, a criptografia é um forte deve. - Daniel B
Isso remove a senha da chave, e é por isso que funciona em torno do problema do OP. Mas eu recomendo contra isso. A senha é tudo o que impede as pessoas de usarem sua chave quando ela é roubada. Como sua chave provavelmente dará acesso a vários sistemas, você não a enfraquecerá. - Martijn Heemels


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

Método 1: adicionar todos conhecidos chaves para o agente SSH.

Então, uma solução que encontrei é executar ssh-add com o -A opção - que adiciona todas as identidades conhecidas ao agente SSH usando as senhas armazenadas em seu conjunto de chaves - assim:

ssh-add -A

Agora isso funciona, mas não vai persistir nas reinicializações. Então, se você quiser nunca mais se preocupar com isso, basta abrir o ~/.bash_profile arquivo como este:

nano ~/.bash_profile

E 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: adicionar apenas chaves SSH que estão no chaveiro para o agente.

Então, enquanto o ssh-add -A opção deve funcionar para a maioria dos casos básicos, me deparei com um problema recentemente, onde eu tinha 6-7 caixas Vagrant (que usa chaves SSH / identidades para acesso) configuração em uma máquina em cima do mais comum id_rsa.pub no lugar.

Para encurtar a história, acabei sendo bloqueado de um servidor remoto devido a muitas tentativas falhas com base em chaves / identidades SSH, já que o acesso ao servidor era baseado em uma senha e as chaves / identidades SSH são chaves / identidades SSH. Então o agente SSH tentou todos das minhas chaves SSH, falha e nem consegui acessar o prompt de senha.

O problema é que ssh-add -A irá 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 depois de muitos testes foi a seguinte.

Primeiro, se você tiver mais identidades / chaves SSH adicionadas ao seu agente do que o necessário, como mostrado em ssh-add -l em seguida, purgar todos eles do agente da seguinte forma:

ssh-add -D

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

eval "$(ssh-agent -s)"

Agora, fica estranho e não tenho certeza do porquê. Em alguns casos, você pode adicionar especificamente ~/.ssh/id_rsa.pub chave / identidade para o agente da seguinte forma:

ssh-add ~/.ssh/id_rsa.pub

Digite sua senha, clique em Retorna e você deveria estar bem para ir.

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ê deverá ver uma única chave / identidade SSH listada.

Tudo bom? Agora abra seu .bash_profile:

nano ~/.bash_profile

E adicione esta linha ao fundo; comentar ou remover o -Aversão se você tiver isso no lugar:

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

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

ATUALIZAÇÃO: A Apple adicionou agora um UseKeychain opção para as opções de configuração aberta SSH e considera ssh-add -A uma solução também.

A partir do macOS Sierra 10.12.2, a Apple (eu suponho) adicionou UseKeychain opção de configuração para configurações de SSH. Verificando 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''.

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


3