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?
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.
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)
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:
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:
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.
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
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.
id_rsa
está criptografado com o seguinte comando: cat ~/.ssh/id_rsa | head -2
Proc-Type: 4,ENCRYPTED
, ela é criptografada e você pode tentar descriptografá-laid_rsa
original! Use o comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
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.
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
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.
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.
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!
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.
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_profile
como explicado neste ticket Open Radar ou adicionando UseKeychain
como uma das opções em um usuário ~/.ssh/config
.
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
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