Parece que ssh-add -K ~/.ssh/id_rsa
carregará sua chave, mas solicitará a senha sempre que você reiniciar.
Estou procurando uma solução que não exija que eu insira novamente a senha da chave entre os logins.
Comentários
Resposta
No OSX , o cliente ssh-add
nativo tem um argumento especial para salvar a senha longa da chave privada no keychain OSX, o que significa que seu login normal irá desbloqueá-lo para uso com ssh. No OSX Sierra e mais tarde, você também precisa configurar o SSH para sempre usar as chaves (veja a Etapa 2 abaixo).
Alternativamente, você pode usar uma chave sem uma senha longa, mas se preferir a segurança que é certamente aceitável com este fluxo de trabalho.
Etapa 1 – Armazene a chave no chaveiro
Faça isso apenas uma vez:
ssh-add -K ~/.ssh/[your-private-key]
Digite sua senha de acesso e não será solicitada novamente.
(Se você estiver em uma versão anterior ao Sierra do OSX, está pronto, a Etapa 2 não é necessária.)
Etapa 2 – Configurar SSH para sempre usar as chaves
Parece que a OSX Sierra removeu o comportamento conveniente de persistir suas chaves entre logins, e a atualização para ssh não usa mais as chaves por padrão. Por isso, você receberá uma solicitação para inserir a senha longa de uma chave após a atualização e novamente após cada reinicialização.
A solução é bastante simples e é descrita em este comentário do tópico do github . Veja como você configura:
-
Certifique-se de ter concluído a Etapa 1 acima para armazenar a chave no chaveiro.
-
Se você ainda não “t criou um arquivo
~/.ssh/config
. Em outras palavras, no diretório.ssh
em seu diretório inicial, faça um arquivo chamadoconfig
. -
Nesse arquivo
.ssh/config
, adicione as seguintes linhas :Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Altere
~/.ssh/id_rsa
para o nome do arquivo real de sua chave privada. Se você tiver outras chaves privadas em seu~/.ssh
diretório, também adicione uma linhaIdentityFile
para cada um deles. Por exemplo, tenho uma linha adicional que dizIdentityFile ~/.ssh/id_ed25519
para uma segunda chave privada.O
UseKeychain yes
é a parte da chave, que diz ao SSH para procurar a chave no seu keychain OSX senha longa. -
É isso! Na próxima vez que você carregar qualquer conexão ssh, ele tentará as chaves privadas que você especificou e procurará sua senha no keychain OSX. Não é necessário digitar a senha.
Comentários
- @Poulsbo & @Abram – veja minha atualização, Sierra mudou o comportamento automático e agora você tem que executar
ssh-add -A
manualmente para carregar suas chaves salvas. Algumas soluções possíveis mencionadas acima. - @trisweb Obrigado pela dica. joshbuchea ' s para modificar o arquivo
.ssh/config
parece promissora! Consulte github.com/lionheart/openradar-mirror/issues/… - Funciona muito bem!No meu caso, precisei usar a sinalização
A
além daK
para adicionar minhas chaves ao keychain e registrar a senha em isso (ssh-add -AK ~/.ssh/[your-private-key]
). Obrigado! - Mesmo com a opção usekeychain, ainda acho que meu keychain vai derrubar a chave .ssh / id_rsa na reinicialização.
- Fiz exatamente o mesmo e meu Mac ainda descarta o na reinicialização.
Resposta
Eu tive um problema semelhante, em que estava sendo perguntado todas as vezes para minha senha de chave de pub. Por sugestão do usuário “trisweb” acima, ativei essas opções para ~/.ssh/config
:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa
Mas ainda perguntava toda vez que eu queria usar o ssh. Por fim, ativei ssh -v
e encontrei esta linha de depuração:
debug1: key_load_private: incorrect passphrase supplied to decrypt private key
Em seguida, abri meu chaveiro em “Acesso às Chaves .app “, encontrou a chave chamada” SSH: /Users/username/.ssh/id_rsa “e a abriu. Cliquei em “Mostrar senha” para revelar a senha e de fato descobri que a frase-senha no chaveiro era uma frase-senha antiga. Eu atualizei a senha no Keychain Access e agora funciona sem senha.
Eu também poderia ter atualizado a senha com esta frase:
ssh-keygen -p -f ~/.ssh/id_rsa
Comentários
- No meu Mac a senha é salva na categoria “senha” da rede “iCloud”. Achei que fosse na cadeia de “login”.
Resposta
Para todos onde o acima não funcionou , meu problema parece ter sido porque eu estava duplicando o UseKeychain yes
& AddKeysToAgent yes
em todos perfis / atalhos de chave SSH. Atualizei meu ~/.ssh/config
arquivo para declará-los apenas uma vez e agora todos carregam no login sem solicitar senhas na inicialização, por exemplo:
Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/foo IdentityFile ~/.ssh/bar Host foo HostName foo.com User fooUser IdentityFile ~/.ssh/foo Host bar HostName bar.com User barUser IdentityFile ~/.ssh/bar
Comentários
- Eu recomendaria
Host *
seguir regras de host específicas. Consulteman ssh_config
para obter detalhes.
Resposta
Além disso, em macOS Sierra e HighSierra (não sei sobre as versões anteriores), a execução de ssh-add -A
fará com que o agente carregue todas as chaves cujas senhas estão armazenadas no Keychain … Muito útil
Resposta
Adicione a chave pública em:
.ssh/known_hosts
Pública a chave geralmente está ativada:
/home/user/.ssh/id_rsa.pub
Espero que ajude
Comentários
- Acho que significa que
authorized_keys
- De qualquer forma, isso não ' não funciona se você tiver mais de uma chave!
id_rsa
contém uma senha.ssh-add
, mas apenas executarssh
diretamente. Você deve obter uma janela que aparecerá como a frase secreta da chave e com uma caixa de seleção para permitir que você armazene-a em seu chaveiro.