Eu tenho que executar este comando desde a atualização para o macOS:
ssh-add -K
Corrige o problema após a reinicialização, mas tenho que executar este comando toda vez que faço logon no meu computador.
Se eu não executar o comando acima, minhas chaves ~/.ssh
serão ignoradas e a senha do servidor será solicitada para estabelecer a conexão.
$ ssh-add -K
me dássh-add: illegal option -- K
-K
. Veja a resposta de @JakeGould para resolução.Respostas:
No macOS Sierra 10.12.2, a Apple adicionou uma
ssh_config
opção chamadaUseKeychain
que permite uma resolução 'adequada' para o problema. Adicione o seguinte ao seu~/.ssh/config
arquivo:Na
ssh_config
man
página 10.12.2:fonte
IdentityFile ~/.ssh/id_rsa
é redundante e não é necessário (ao olhar para as opções padrão). Eu nunca defini essa opção no meu arquivo de configuração ssh.~/.ssh/config~
é preferível, pois resolve o problema nossh
nível. Não tenho 100% de certeza de que o.bash_profile
mod funcionará para clientes da GUI usando ssh sem usar um shell.Eu tive esse problema também ao tentar implantar algum código usando o Capistrano . Muito frustrante. Aqui estão dois métodos que eu 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-A
opção - que adiciona todas as identidades conhecidas ao agente SSH usando quaisquer senhas armazenadas no seu conjunto de chaves - da seguinte maneira:Agora isso funciona, mas não persistirá durante as reinicializações. Portanto, se você nunca mais se preocupar com isso, abra o
~/.bash_profile
arquivo do usuário assim:E adicione esta linha na parte inferior:
Agora, quando você abre uma nova janela do Terminal, tudo deve ficar bom!
Método 2: Adicione apenas chaves SSH que estão no conjunto de chaves ao agente.
Portanto, embora a
ssh-add -A
opção funcione nos casos mais básicos, encontrei recentemente um problema em que havia 6-7 caixas do Vagrant (que usam chaves / identidades SSH para acesso) configuradas em uma máquina, além das mais comunsid_rsa.pub
.Para encurtar a história, acabei sendo bloqueado de um servidor remoto devido a muitas tentativas falhas com base em chaves / identidades SSH, uma vez que o acesso ao servidor foi baseado em uma senha e as chaves / identidades SSH são chaves / identidades SSH. Portanto, o agente SSH tentou todas as minhas chaves SSH, falhou e eu nem consegui acessar o prompt de senha.
O problema é que
ssh-add -A
você adiciona arbitrariamente todas as chaves / identidades SSH que você possui ao agente, mesmo que não seja necessário; como no caso de 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 precisa, conforme mostrado em
ssh-add -l
seguida, limpe todas elas do agente da seguinte maneira:Feito isso, inicie o agente SSH como um processo em segundo plano, assim:
Agora, fica estranho e não sei muito bem o porquê. Em alguns casos, você pode adicionar especificamente a
~/.ssh/id_rsa
chave / identidade ao agente da seguinte maneira:Digite sua senha, aperte Returne você deve estar pronto.
Mas em outros casos, basta executar isso para obter a chave / identidade adicionada:
Se tudo estiver funcionando, digite
ssh-add -l
e você verá uma única chave / identidade SSH listada.Tudo bom? Agora abra seu
.bash_profile
:E adicione esta linha na parte inferior; comente ou remova a
-A
versão se você a tiver: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
UseKeychain
opção às opções de configuração abertas do SSH e considerassh-add -A
uma solução também.A partir do macOS Sierra 10.12.2, a Apple adicionou uma
UseKeychain
opção de configuração para configurações SSH. A verificação da página de manual (viaman ssh_config
) mostra as seguintes informações:O que significa que a Apple vê a solução como uma adição
ssh-add -A
à sua,.bash_profile
conforme explicado neste ticket de Radar Aberto ouUseKeychain
como uma das opções em uma por usuário~/.ssh/config
.fonte
ssh-add -K [path to key]
digite e digite pw quando solicitado. O Keychain armazenará a senha e o ssh-add a obterá depois disso.UseKeychain
eAddKeysToAgent
adicionar automaticamente suas chaves do ssh_config. Nenhum script de shell é necessário. Veja @mluisbrown resposta abaixo para obter as informações atualizadas para 10.12.2ssh-add -A
em seu script rc se você quiser suas chaves sempre ser carregado.”¯\_(ツ)_/¯
Conforme explicado aqui , este é o método recomendado desde o macOS 10.12.2 :
Adicione as seguintes linhas ao seu
~/.ssh/config
arquivo:Qualquer chave que você adicionar ao ssh-agent usando o
ssh-add /path/to/your/private/key/id_rsa
comando será automaticamente adicionada ao chaveiro e deverá ser carregada automaticamente na reinicialização.Estou adicionando esta resposta porque:
IdentityFile ~/.ssh/id_rsa
linha, mas essa opção não é necessária para o carregamento automático das chaves (e, na verdade, vincula essa chave específica para a seção do host à qual você a adiciona, o que você não desejará se usar chaves diferentes para hots diferentes).UseKeychain
, mas isso não é suficiente para manter as chavesssh-agent
após uma reinicialização.fonte
ssh-add -L
e será relatadoThe agent has no identities
. Nada estará lá até você se conectar. OAddKeysToAgent
não persiste chaves entre reinicializações de forma alguma!Eu escrevi um pequeno post sobre este tópico que pode ajudá-lo.
Uma solução está chamando o
ssh-add -A
comando em cada inicialização.Basta adicionar um
.plist
arquivo com o seguinte conteúdo ao caminho~/Library/LaunchAgents/
ou criar um com o aplicativo Lingon :fonte
Desde o macOS 10.12.2, você pode usar a
UseKeychain
opção Leia mais aqui ou vejaman ssh_config
.Então, faça o seguinte:
echo "UseKeychain yes" >> ~/.ssh/config
fonte
>>
está em risco se você inserir o comando várias vezes. Melhor fazer uma edição manual do arquivo, conforme descrito pela resposta mluisbrown ou ChrisJF .Eu achei que
ssh-add -K
me deu " opção ilegal - K ". Isso ocorreu porque o ssh-add era uma versão estranha vinda de / usr / local / bin (instalada pelo brew?). Consegui adicionar a chave pelo uso específico do ssh-add localizado em / usr / bin:fonte
Eu já tinha esse problema e encontrei uma maneira de contornar isso. Acabei de criar um arquivo nomeado
config
na minha~/.ssh
pasta, onde adicionei as seguintes linhas:Não sei por que, mas
Host
eHostName
ambos são importantes. No meu caso, se um deles não estivesse presente, a solução não funcionaria.Então, eu apenas fiz um
ssh-add -K
e estava funcionando mesmo após o reinício.fonte
Se você estiver usando uma versão diferente do ssh (por exemplo, instalada via homebrew), as soluções acima não funcionarão imediatamente. Por exemplo,
AddKeysToAgent yes
eUseKeychain yes
no.ssh/config
arquivo não são reconhecidos por versões ssh que não são da Apple e causarão um erro. O mesmo para a opção-A
ou-K
para ossh
cliente.Isso significa que a resposta de @mluisbrown não funcionará. Você pode usar o método 1 da resposta de @JakeGould e usar explicitamente o
ssh-add
utilitário macOS no seu.bash_profile
para adicionar todas as chaves ao chaveiro, ou seja:Como mencionado no comentário acima , você pode precisar adicionar uma chave ao chaveiro primeiro: por exemplo
/usr/bin/ssh-add -K .ssh/github
fonte
Alterar ~ / .ssh / config para adicionar UseKeyChain a todos os hosts é suficiente para interromper esse pesadelo recorrente;)
Se o arquivo estiver vazio ou não existir, basta criar e / ou adicionar a configuração acima.
fonte
Atualizei para o Mac OS X Sierra (10.12.6). Eu poderia ssh em outros hosts, mas não no github.com.
Isto é o que eu tive que inserir em ~ / .ssh / config:
Após essa alteração, eu poderia usar o github como antes.
fonte