Como devops / sysadmin (o que quer que esses títulos signifiquem para você), eu confio no SSH praticamente o tempo todo. Também sou muito paranóico com relação à segurança e minhas várias chaves SSH, isso me levou a desabilitar completamente o ssh-agent há muito tempo porque eu não queria minha senha armazenada nas chaves do OS X por um período indefinido de tempo (especialmente porque Quase nunca reinicializo minha máquina) caso algo realmente ruim aconteça, como meu computador sendo roubado.
No entanto, hoje me deparei com um pequeno problema em relação a essa configuração quando eu queria implantar um aplicativo usando capistrano (algo que não fazia desde sempre) de minha máquina, o que normalmente não faço (tenho uma ferramenta semelhante ao capistrano, mas Eu empurro arquivos diretamente para um conjunto de servidores sem depender de um servidor SCM externo) e percebi que, uma vez que meu ssh-agent foi desabilitado, o encaminhamento de ssh era inútil.
A primeira coisa que fiz foi atualizar meu ssh-agent usando homebrew e usando o seguinte artigo: http://www.dctrwatson.com/2013/07/how-to-update-openssh-on-mac-os-x/ . Então usei este tópico de discussão: https://discussions.apple.com/thread/2135145 para encontrar uma maneira de definir um tempo limite para meu agente ssh. No início, achei uma boa ideia definir o tempo limite para 10 segundos, mas de alguma forma é um pouco curto ao implantar através do capistrano, então finalmente o ajustei para 120 segundos, então agora meu plist fica assim:
<?xml version="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 version="1.0">
<dict>
<key>Label</key>
<string>org.openbsd.ssh-agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ssh-agent</string>
<string>-l</string>
<string>-t</string>
<string>120</string>
</array>
<key>ServiceIPC</key>
<true/>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SecureSocketWithKey</key>
<string>SSH_AUTH_SOCK</string>
</dict>
</dict>
<key>EnableTransactions</key>
<true/>
</dict>
</plist>
No momento, é satisfatório o suficiente, mesmo se eu tiver que inserir manualmente minha (s) chave (s) no agente a cada dois minutos, se quiser usá-las em um servidor remoto permitindo o encaminhamento do agente. Além disso, definir a (s) chave (s) certa (s) nas opções ssh do capistrano é uma grande ajuda para selecionar quais chaves usar durante a implantação.
Paz.