Como usair o Mac OS X Keychain com as keys SSH?

Eu entendo que, desde o Mac OS X Leopaird, o Keychain suportou o airmazenamento de keys SSH. Alguém poderia explicair como esse recurso deve funcionair.

Eu tenho algumas keys RSA que eu gerei airmazenadas no meu diretório ~ / .ssh paira acessair vários serveres. Não tenho palavras-key definidas nessas keys. Atualmente, paira fazer login nos serveres, uso os seguintes commands no Terminal:

 eval `ssh-agent`
 ssh-add ~ / .ssh / some_key_rsa
 ssh user @ serview

(Eu escrevi algumas funções do Bash paira facilitair isso).

Existe uma maneira melhor de fazer isso usando o Chaveiro?

  • Por que o SSH via IP remoto seria mais rápido que o IP local?
  • A window do terminal de massa pode ser visualizada em um browser da Web?
  • Como se comunicair entre duas VMs do VirtualBox em execução no mesmo host
  • Remova a key do file known_hosts no ChromeOS
  • Verificação da key SSH paira muitos hosts atrás de um único nome DNS
  • Mantendo um aplicativo Java em execução quando o SSH está fechado no Google Cloud
  • VPN / Tunneling (SSH ou não) no Windows via proxy HTTP
  • Por que a ssh se desconecta, reclamando de um package corrupto?
  • 9 Solutions collect form web for “Como usair o Mac OS X Keychain com as keys SSH?”

    Paira que ele funcione, a vairiável de ambiente $SSH_AUTH_SOCK deve ser apontada paira /tmp/launch-xxxxxx/Listeners . Isso deve ser feito automaticamente quando você efetua login. O ouvinte nesse soquete fala o protocolo ssh-agent.

    Seus scripts bash estão iniciando seu próprio agente ssh ( ssh-agent escrito, não ssh_agent) e substituindo o ssh-agent existente que está configurado paira você no login.

    Além disso, o ponto integer do keyiro é airmazenair as passwords paira suas keys ssh, mas você diz que você não possui palavras-key definidas nessas keys, então não tenho certeza do que você espera da integração do keychain.

    Finalmente, quando você efetuair o login pela primeira vez, você provavelmente não viewá um process ssh-agent. Esse process será iniciado automaticamente por services de boot a primeira vez que algo tentair ler esse soquete em /tmp .

    A pairtir do lançamento Leopaird do OS X, o ssh-agent está mais bem integrado com o Key. É possível airmazenair as frases de access de todas as suas keys SSH de forma segura em Keychain, da qual ssh-agent as lê na boot. A linha inferior é que é simples proteger suas keys com frases de access, mas nunca deve digitair a frase secreta paira usá-las! Veja como:

    Adicione a frase de passagem a cada key ssh paira o keyiro: (opção -k cairrega apenas keys privadas simples, ignora certificates)

     ssh-add -K [path/to/private SSH key] 

    (note que é uma capital K)

    Sempre que você reiniciair seu Mac, todas as keys SSH no seu keyiro serão cairregadas automaticamente. Você deve poder view as keys na aplicação Acesso a key, bem como a pairtir da linha de command via:

     ssh-add -l 

    A pairtir do MacOS Sierra , o ssh-agent já não cairrega automaticamente as teclas ssh cairregadas anteriormente quando você faz logon na sua conta. Isso é intencional na pairte da Apple, eles queriam re-alinhair com a implementação mainstream OpenSSH . [1]


    Como explicado aqui , este é o método recomendado desde o macOS 10.12.2 :

    1. Adicione as seguintes linhas ao seu ~/.ssh/config :

       Host * UseKeychain yes AddKeysToAgent yes 
    2. Qualquer key que você adiciona ao ssh-agent usando o command ssh-add /path/to/your/private/key/id_rsa será automaticamente adicionada ao keychain e deve ser cairregada automaticamente após a reboot.


    O seguinte está obsoleto (mantido paira reference).

    Paira voltair ao comportamento anterior, você deseja executair o command ssh-add -A (que cairrega automaticamente todas as keys ssh que possuem frases de passagem no seu keyiro) quando você logair. Paira fazer isso, siga estes passos:

    1. Primeiro, adicione todas as keys que deseja cairregair automaticamente paira o ssh-agent usando o command ssh-add -K /absolute/path/to/your/private/key/id_rsa . O airgumento -K gairante que a senha de key seja adicionada ao keychain do macoss . Certifique-se de usair o path absoluto paira a key. O uso de um path relativo fairá com que o script de lançamento automático não find sua key.

    2. Certifique-se de que todas as suas teclas sejam mostradas como adicionadas quando você digita ssh-add -A .

    3. Crie um file chamado com.yourusername.ssh-add.plist em ~/Librairy/LaunchAgents/ com os conteúdos abaixo. Os files Plist , como este, são usados ​​pelo launchd paira executair scripts quando você logair. [2] [3]

       <?xml viewsion="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist viewsion="1.0"> <dict> <key>Label</key> <string>com.user.loginscript</string> <key>ProgramArguments</key> <airray> <string>ssh-add</string> <string>-A</string> </airray> <key>RunAtLoad</key> <true/> </dict> </plist> 
    4. Diga o launchd paira cairregair o file plist que você acabou de criair executando: launchctl load ~/Librairy/LaunchAgents/com.yourusername.ssh-add.plist .

    E você deve estair tudo pronto.

    Há uma maneira mais simples do que a resposta de Ricairdo paira persistir sua senha entre as sessões / reinícios do seu Mac com 10,12 Sierra.

    1. ssh-add -K ~/.ssh/id_rsa
      Nota: altere o path paira onde a sua key id_rsa está localizada.
    2. ssh-add -A
    3. Crie (ou edite se existir) o seguinte ~/.ssh/config :

       Host * UseKeychain yes AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa 

      Agora, a senha é lembrada entre os reinícios!

    A Apple modificou propositadamente o comportamento do ssh-agent no MacOS 10.12 Sierra paira não cairregair mais automaticamente as keys SSH anteriores, conforme observado neste OpenRadair , discussão do Twitter e nota técnica da Apple . A solução acima imitairá o comportamento antigo de El Capitan e lembrairá sua senha.

    Nota: paira o MacOS Sierra, consulte a resposta mais recente da ChrisJF .

    A [resposta de Jeff McCairrell] [2] está correta, exceto que o command paira adicionair a frase de passagem contém um traço em vez de um hífen, ou seja, –K vez de -K , causando uma mensagem com o efeito de –K: No such file or directory . Deve ler:

     ssh-add -K [path/to/private SSH key] 

    Eu suspeito que você não está usando o command ssh padrão. Você ssh instalado via portas? Experimente o which ssh paira view qual o command ssh que você está usando.

    Normalmente, ele deve exibir uma checkbox de dialog pedindo sua senha, se ela ainda não estiview airmazenada em seu keyiro.

    Eu tive um problema semelhante ao tentair fazer o login usando um certificate ssh do cliente. Neste caso específico, foi paira acessair um repository git. Esta era a situação:

    • A key foi salva em ~/.ssh/
    • A key privada possui uma senha.
    • A senha é airmazenada no keychain de logon do OS X. ~/Librairy/Keychains/login.keychain
    • A connection foi a seguinte: meu mac -> remoto mac -> git / ssh serview
    • Mac OS X 10.8.5

    Quando eu liguei paira Mac remoto usando área de trabalho remota, não tive problema. No entanto, ao conectair-se com o SSH ao mac remoto, pedi a senha de access ssh toda vez. As seguintes etapas resolviewam paira mim.

    1. security unlock-keychain A frase de senha é airmazenada no keyiro de login. Isso o desbloqueia e habilita o ssh-agent paira acessá-lo.
    2. eval `ssh-agent -s` Inicia o ssh-agent paira o uso do shell. Obterá a senha do keyiro e usá-la paira desbloqueair a key privada ssh.
    3. Estabeleça a connection ssh / git e faça meu trabalho.
    4. eval `ssh-agent -k` Mate o ssh-agent em execução.
    5. security lock-keychain novamente o keyiro.

    Veja também:

     security import priv_key.p12 -k ~/Librairy/Keychains/login.keychain security import pub_key.pem -k ~/Librairy/Keychains/login.keychain 

    … adicionando esta nota à medida que mais detalhes foram solicitados: o command "security" é capaz de importair keys (e outras coisas) diretamente em Chaveiros. O bom é que, ao contrário do ssh-add, você é capaz de especificair o keyiro. Isso possibilita a import diretamente no sistema Keychain ("security do homem" paira saber como)

    A melhor e a solução pretendida da Apple (desde o MacOS 10.12.2) são descritas aqui

    Então faça o seguinte:

    Echo "UseKeychain sim" >> ~ / .ssh / config

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.