このソリューションは、sshキーがパスフレーズで保護されている場合に便利です。
上記のすべての回答の問題は、秘密鍵がパスフレーズで保護されている場合、新しい端末を起動して秘密鍵を使用しようとするたびに、パスフレーズを入力する必要があり、結果ssh-agent
としての複数のコピーが実行されることになります。メモリ。解決策は、以下を~/.bashrc
or に追加することです~/.zshrc
:
##### START Fix for ssh-agent #####
# Ref: http://mah.everybody.org/docs/ssh
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
##### END Fix for ssh-agent #####
これは、ターミナルを起動するときに一度だけssh秘密鍵のパスフレーズを要求します。その後、新しいターミナルセッション(またはtmux参照)を開くと、上記のスニペットによって作成されたssh-agentが再利用されます。
参照