Macでssh-agentを共有(keychainなし)
~/.bash_profile に、
if [ ! -S ${SSH_AUTH_SOCK} ]; then eval `ssh-agent -a ${SSH_AUTH_SOCK}` echo ${SSH_AGENT_PID} > /tmp/ssh_agent_pid ssh-add else export SSH_AGENT_PID=`cat /tmp/ssh_agent_pid` fi
以上を追加して、~/.ssh/id_dsaに秘密鍵をセット。
また、~/.MacOSX/environment.plistには、以下のような環境変数の設定を記述する。
<?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>SSH_AUTH_SOCK</key> <string>/tmp/.ssh_auth_xxxxxxx</string> </dict> </plist>
これで、ターミナルを起動するだけで、ssh-agentが使用するUnixドメインソケットがなければssh-agentを起動して秘密鍵を追加。
そうでなければすでにssh-agentが存在するので、新たにssh-agentを起動せずにそれを使用(ただし、ssh-agent -kに備えた環境変数の設定は行う)することができるよ。
環境変数SSH_AUTH_SOCKの設定をenvironment.plistを使って行っているので、最初に一度だけターミナルを起動すれば、あとはMacOS上のアプリケーションについてもシェルから起動しなくてもssh-agentを共有することが可能。
まぁ、keychainが行っていることと同じことをやってるんだろうけどな。