Entendo que, desde o Mac OS X Leopard, o Keychain suporta o armazenamento de chaves SSH. Alguém poderia explicar como esse recurso deve funcionar.
Eu tenho algumas chaves RSA que eu gerei armazenadas no meu diretório ~ / .ssh para acessar vários servidores. Não tenho senhas definidas nessas teclas. Atualmente, para fazer login nesses servidores, eu uso os seguintes comandos no Terminal:
eval `ssh-agent` ssh-add ~ / .ssh / some_key_rsa ssh usuário @ servidor
(Eu escrevi algumas funções do Bash para facilitar isso.)
Existe uma maneira melhor de fazer isso usando o chaveiro?
ssh-add
para adicionar minhas identidades RSA ao agente ssh padrão iniciado no logon?$HOME/.ssh/authorized_keys
nesse servidor. O ssh-agent + keychain do Mac OS é usado apenas para armazenar a senha das chaves ssh locais; não se destina a enviar senhas remotas através de conexões ssh existentes.ssh -v
para diagnosticar o que o ssh está fazendo. use tambémsshd -p 8900 -v
no lado do servidor essh -v remote:8900
para diagnosticar o que o sshd está fazendo.Desde a versão Leopard do OS X, o ssh-agent está mais integrado ao Keychain. É possível armazenar as senhas de todas as suas chaves SSH com segurança no Keychain, a partir das quais o ssh-agent as lerá na inicialização. A conclusão é que é simples proteger suas chaves com senhas, mas nunca é necessário digitar a senha para usá-las! Aqui está como:
Inclua a frase secreta em cada chave ssh no chaveiro: (a opção -k carrega apenas chaves privadas simples, ignora certificados)
(note que é um K maiúsculo)
Sempre que você reiniciar o seu Mac, todas as chaves SSH no seu chaveiro serão carregadas automaticamente. Você poderá ver as chaves no aplicativo Keychain Access, bem como na linha de comando via:
fonte
ssh-add -l
não lista nenhuma tecla ao conectar remotamente (onde $ DISPLAY não está definido). Truques especiais precisam ser empregados aqui para usar o chaveiro (por exemplo, em superuser.com/questions/141044/… )/usr/bin/ssh-add
.ssh-add -l
retorna "O agente não tem identidades". (ps aux
inclui/usr/bin/ssh-agent -l
).No macOS Sierra , o ssh-agent não carrega mais automaticamente as chaves ssh carregadas anteriormente quando você faz login na sua conta. Isso é intencional por parte da Apple, eles queriam se realinhar com a implementação principal do OpenSSH . [1]
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.O seguinte foi descontinuado (mantido para referência).
Para voltar ao comportamento anterior, você deseja executar o
ssh-add -A
comando (que carrega automaticamente todas as chaves ssh que possuem frases secretas no seu conjunto de chaves) ao fazer login. Para fazer isso, siga estas etapas:Primeiro, adicione todas as chaves que você deseja carregar automaticamente no ssh-agent usando o
ssh-add -K /absolute/path/to/your/private/key/id_rsa
comando O-K
argumento garante que a frase-chave da chave seja adicionada ao chaveiro do macOS . Certifique-se de usar o caminho absoluto para a chave. Usar um caminho relativo fará com que o script iniciado automaticamente não encontre sua chave.Verifique se todas as suas chaves são mostradas como adicionadas ao digitar
ssh-add -A
.Crie um arquivo chamado
com.yourusername.ssh-add.plist
no~/Library/LaunchAgents/
com o conteúdo abaixo. Arquivos de lista como este são usadoslaunchd
para executar scripts quando você faz login. [2] [3]Diga
launchd
para carregar o arquivo plist você acabou de criar executando:launchctl load ~/Library/LaunchAgents/com.yourusername.ssh-add.plist
.E você deve estar tudo pronto.
fonte
Existe uma maneira mais simples do que a resposta de Ricardo de manter sua senha entre as sessões / reinicializações do seu Mac com a versão 10.12 Sierra.
ssh-add -K ~/.ssh/id_rsa
Nota: altere o caminho para onde sua chave id_rsa está localizada.
ssh-add -A
Crie (ou edite, se existir) o seguinte
~/.ssh/config
arquivo:Agora a senha é lembrada entre as reinicializações!
A Apple alterou intencionalmente o comportamento do ssh-agent no macOS 10.12 Sierra para não carregar mais automaticamente as chaves SSH anteriores, conforme observado nesta discussão do OpenRadar , Twitter e Nota técnica da Apple . A solução acima imitará o antigo comportamento do El Capitan e lembrará sua senha.
fonte
ssh-add -K
para adicionar minha chave SSH ao Apple Keychain, qual é o nome e o tipo de entrada mostrado no Keychain Access.app?Nota: para o macOS Sierra, consulte a resposta mais recente de ChrisJF .
A [resposta de Jeff McCarrell] [2] está correta, exceto que o comando para adicionar a frase secreta contém um traço em vez de um hífen, ou seja, em
–K
vez de-K
causar uma mensagem com efeito–K: No such file or directory
. Deve ler-se:fonte
ssh-add -K
illegal option -- K
. K minúsculo está listado como uma opção.-K
, ou seja, traço-de capital-K, ainda é válidoEu suspeito que você não está usando o
ssh
comando padrão . Vocêssh
instalou via portas? Tentewhich ssh
ver qualssh
comando você está usando.Normalmente, ele deve exibir uma caixa de diálogo solicitando sua senha, se ainda não estiver armazenada no seu chaveiro.
fonte
Eu tive um problema semelhante ao tentar fazer login usando um certificado ssh do cliente. Nesse caso específico, era para acessar um repositório git. Esta foi a situação:
~/.ssh/
~/Library/Keychains/login.keychain
->
remoto mac mac->
git / sshQuando me conectei ao mac remoto usando a área de trabalho remota, não tive nenhum problema. No entanto, ao conectar-me com o SSH no Mac remoto, sempre fui solicitado a senha do ssh. Os seguintes passos o resolveram para mim.
security unlock-keychain
A senha é armazenada no chaveiro de login. Isso o desbloqueia e permite ao ssh-agent acessá-lo.eval `ssh-agent -s`
Inicia o ssh-agent para uso de shell. Ele obterá a senha do chaveiro e a utilizará para desbloquear a chave ssh privada.eval `ssh-agent -k`
Mate o agente ssh em execução.security lock-keychain
Bloqueie o chaveiro novamente.fonte
eval \$(ssh-agent)
por Re: login remoto e chaveiro . Quando não estiver em um alias,eval $(ssh-agent)
funciona ( sem a barra invertida $ ).Veja também:
... adicionando esta nota à medida que mais detalhes foram solicitados: o comando "security" é capaz de importar chaves (e outras coisas) diretamente no Keychains. O bom é que, diferentemente do ssh-add, você pode especificar o chaveiro. Isso torna possível importar diretamente para o sistema Keychain ("man security" para saber como)
fonte
A melhor solução pretendida pela Apple (desde o macOS 10.12.2) é descrita aqui
fonte
>>
está em risco se você inserir o comando várias vezes. Melhor fazer uma edição manual do arquivo, conforme descrito pela resposta de ChrisJF .