it-swarm-pt.tech

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?

555
erwan

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

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 a ssh-agent.


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

1075
Jukka Suomela

Eu tive o mesmo problema. O keychain do 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 chave estiver em outra pasta que ~/.ssh, substitua pela pasta correta.

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

176
Lars G.

Isso corrigiu meu problema semelhante:

/usr/bin/ssh-add -K

Isso armazena senhas em seu chaveiro.

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

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

66
critikaster

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 Keychain Access.
  • No 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 para sua senha administrativa. Digite-o na caixa de diálogo "Acesso às Chaves".
  • Sua senha será revelada.
40
Olli Jaakkola

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

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.

18
Hank Snow

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

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

Retirado de: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Consulte também: https://Apple.stackexchange.com/a/264974/3810

15
ThomasW

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

  1. Verifique se o seu 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 é 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 por uma descriptografada: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

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

7
Martijn Pieters

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 nota técnica da Apple e fiz este meu arquivo de configuração. Não mais pedindo minha senha!

https://developer.Apple.com/library/content/technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes
3
Geek Goddess

Jukka Suomela 's resposta está correto, mas se você estiver usando openssh instalado de homebrew, então você também precisa desinstalá-lo com:

brew remove openssh

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

3
Greg Dubicki

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: 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 as senhas armazenadas em suas chaves - 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 usuário assim:

nano ~/.bash_profile

E adicione essa linha ao final:

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

Agora, quando você abrir 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 do mais comum id_rsa.pub no lugar.

Para encurtar a história, acabei sendo bloqueado de um servidor remoto devido a muitas tentativas mal-sucedidas com base em identidades/chaves 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 das minhas chaves SSH, falhou e eu nem consegui chegar ao Prompt da senha.

O problema é que ssh-add -A apenas adicionará arbitrariamente cada chave SSH/identidade que você possui 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, conforme mostrado em ssh-add -l, remova-as 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 a chave/identidade ~/.ssh/id_rsa.pub ao agente da seguinte forma:

ssh-add ~/.ssh/id_rsa.pub

Digite sua senha, clique em Return 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ê verá uma chave/identidade SSH listada.

Tudo bom? Agora abra seu .bash_profile:

nano ~/.bash_profile

E adicione esta linha ao fundo; comentar ou remover a versão -A 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 agora 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 (eu suponho) adicionou uma opção de configuração UseKeychain para configurações de SSH. Marcar a página man (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 resume a Apple a ver a solução como adicionando ssh-add -A ao seu .bash_profilecomo explicado neste ticket Open Radar ou adicionando UseKeychain como uma das opções em um usuário ~/.ssh/config.

3
JakeGould

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

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

Adicionando a seguinte linha no topo .ssh/config arquivo em ambos os locais e a máquina remota funcionou para mim.

PubkeyAcceptedKeyTypes=+ssh-dss 
1
Roei Bar Aviv