2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS continua a pedir a minha senha ssh desde que fui actualizado para a Serra

Costumava lembrar a frase-chave, mas agora está a pedi-la a mim de cada vez.

Li que preciso de regenerar a chave pública com este comando, o que eu fiz:

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

mas não consertou nada.

Como posso fazer com que MacOS se lembre novamente da minha frase-chave?

Respostas (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

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

Host *
    UseKeychain yes

Não há necessidade de alterar mais nada. Agora tudo funciona da maneira que funcionava antes das últimas actualizações. Não há necessidade de adicionar chaves ao ssh-agent.


Editar: Poderá ainda precisar de introduzir a sua frase-chave uma vez. Se não a souber, siga estas instruções para a revelar.

193
193
193
2016-09-23 12:53:05 +0000

Eu tinha o mesmo problema. O chaveiro MacOS Sierra continua a pedir a frase-chave. A sua id\rsa deve ser encriptada com uma frase-chave para segurança. Depois tente adicioná-la ao porta-chaves ssh-add -K ~/.ssh/id_rsa

Se a sua chave estiver noutra pasta que não ~/.ssh então substitua-a pela pasta correcta.

Keychain conhece agora a sua chave ssh e, esperançosamente, tudo funciona agora (a minha funcionou)

75
75
75
2016-10-09 14:39:56 +0000

Isto fixou a minha edição semelhante:

/usr/bin/ssh-add -K

Isto armazena frases-chave no seu porta-chaves.

Atualização (obrigado @EasyCo): Isto funciona mas não persiste entre as reinicializações. A solução de @jukka-suomela nesta página ** funciona entre reinícios. Pode encontrar essa resposta aqui: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Só tive de introduzir a frase-chave correcta uma vez e começou a funcionar. O problema era que não me lembrava da minha frase-chave SSH original, mas recuperei-a seguindo estes passos do Github:

  • No Finder, procurar a aplicação Keychain Access.
  • Em Keychain Access, procurar por SSH. & - Faça duplo clique na entrada da sua chave SSH para abrir uma nova caixa de diálogo.
  • Diálogo de acesso ao chaveiro No canto inferior esquerdo, seleccione Mostrar palavra-chave. & - Ser-lhe-á pedida a sua palavra-passe administrativa. Digite-a na caixa de diálogo “Keychain Access”. & - A sua palavra-passe será revelada.
19
19
19
2016-09-27 14:40:37 +0000

Nenhuma das soluções acima funcionou após a instalação da Sierra sobre El Capitan num novo MacBook Pro. A Sierra por concepção não guarda chaves SSH no porta-chaves.

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

Uma solução mais complicada, mas um pouco mais manhosa, é criar um plist com o comando que é executado cada vez que o SO é inicializado como sugerido em Salvar chaves SSH em macOS Sierra keychain . Isto envolve a utilização de Xcode para criar o ficheiro.

18
18
18
2016-12-16 06:14:08 +0000

Uma correcção é adicionar o seguinte ao seu ficheiro ~/.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/ Também ver: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Esta manhã, tive o mesmo problema que o senhor após a actualização para a Serra. No meu caso, o ficheiro id_rsa foi encriptado e depois de o decifrar estava a funcionar como um encanto.

  1. verifique se o seu ficheiro id_rsa está encriptado com o seguinte comando: cat ~/.ssh/id_rsa | head -2
  2. Se a segunda linha diz Proc-Type: 4,ENCRYPTED, está encriptado e pode tentar decifrá-lo
  3. Importante: faça uma cópia de segurança do seu ficheiro id_rsa original! Use o comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Descodifique a 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 decifrada: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Depois destes passos, deverá poder utilizar novamente o ssh.

8
8
8
2017-02-15 02:15:22 +0000

Tentei várias respostas aqui, mas ainda estava a ter problemas com a passagem de chaves remotas (como quando usava capistrano). Para o resolver, li a nota técnica da maçã e fiz deste o meu ficheiro de configuração. Chega de pedir a minha palavra-passe! https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Tive também este problema quando tentei implementar algum código usando Capistrano . Muito frustrante. Aqui estão dois métodos que conheço para lidar com esta questão.

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

Assim, uma solução que encontrei é correr ssh-add com a opção -A - que adiciona todas as identidades conhecidas ao agente SSH usando qualquer frase-chave armazenada no seu porta-chaves como esta:

ssh-add -A

Agora isto funciona mas não vai persistir através de reinicializações. Portanto, se nunca mais se quiser preocupar com isto, basta abrir o ficheiro ~/.bash_profile do seu utilizador desta forma:

nano ~/.bash_profile

E adicione esta linha ao fundo do ecrã:

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

Agora, quando abrir uma nova janela de Terminal, tudo deve ser bom!

Método 2: Adicione somente chaves SSH que estão no porta-chaves ao agente.

Assim, embora a opção ssh-add -A deva funcionar para a maioria dos casos básicos, deparei-me recentemente com um problema onde tinha 6-7 caixas Vagrant (que usa chaves/identidades SSH para acesso) configuradas numa máquina em cima das id_rsa.pub mais comuns no local.

Resumindo, acabei por ser bloqueado fora de um servidor remoto devido a demasiadas tentativas falhadas baseadas em chaves/identidades SSH, uma vez que o acesso ao servidor se baseava numa palavra-chave e as chaves/identidades SSH são chaves/identidades SSH. Assim, o agente SSH tentou todas as minhas chaves SSH, falhou e eu nem sequer consegui chegar ao prompt da palavra-passe.

O problema é que ssh-add -A apenas adicionará arbitrariamente ao agente todas as chaves/identidades SSH que tiver, mesmo que não seja necessário fazê-lo; tal como no caso das caixas Vagrant.

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

Primeiro, se tiver mais chaves/identidades SSH adicionadas ao seu agente do que precisa - como mostrado com ssh-add -l depois purge-as todas do agente assim:

ssh-add -D

Com isso feito, então comece o agente SSH como um processo de fundo assim:

eval "$(ssh-agent -s)"

Agora, torna-se estranho e não estou muito certo do porquê. Em alguns casos, é possível adicionar especificamente a chave/identidade ~/.ssh/id_rsa.pub ao agente desta forma:

ssh-add ~/.ssh/id_rsa.pub

Digite na sua frase-chave, prima Return e deverá estar pronto para ir.

Mas em outros casos, basta simplesmente correr isto para ter a chave/identidade adicionada:

ssh-add -K

Se tudo isto funcionar, escreva ssh-add -l e deverá ver uma única chave/identidade SSH listada.

Todos bons? Agora abra o seu .bash_profile:

nano ~/.bash_profile

E adicione esta linha ao fundo; comente ou remova a versão -A se a tiver no lugar:

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

Isso permitirá que a chave/identidade SSH seja recarregada ao agente SSH em cada arranque/boot.

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

A partir de macOS Sierra 10.12.2, a Apple (presumo) adicionou uma opção UseKeychain de configuração para as configurações SSH. Verificando a página man (via man ssh_config) mostra a seguinte informação:

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

O que se resume à Apple vendo a solução como ou adicionar ssh-add -A ao seu .bash_profile como explicado neste bilhete de Radar Aberto ou adicionar UseKeychain como uma das opções num ~/.ssh/config por utilizador.

4
4
4
2017-01-28 08:58:48 +0000

Jukka Suomela ’s resposta está correcto, mas se estiver a usar openssh instalado a partir de homebrew, então também precisa de o desinstalar com:

brew remove openssh

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

2
2
2
2016-12-10 21:04:01 +0000

É necessário um ficheiro .plist adicionado a ~/Library/LaunchAgents/ para executar ssh-add -A em cada arranque de macOS.

Existe um único comando que faz isto (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
2
2
2
2017-01-01 23:56:10 +0000

Tentei todas as soluções aqui sugeridas, mas não tenho o chaveiro instalado no meu Mac.

Adicionando à linha seguinte no topo .ssh/config ficheiro tanto na máquina local como na remota funcionou para mim.

PubkeyAcceptedKeyTypes=+ssh-dss