CentOS 5、MediaTemple(dv)サーバーにログインするたびに、次のことを行う必要があります。
ssh-agent $BASH
ssh-add .ssh/my_id
ログインできたら。これは、サーバーがgitワークフローに参加するために使用されます。開発中にかなりの反復を行うため、同じことを何度も繰り返すことにうんざりしています。
これをサーバーの.bash_profileに追加してもうまくいきません。また、sshについての理解が非常に限られているため、ssh_agent $BASH
を実行すると、新しいログインウィンドウが生成されるだけです(したがって、ファイルの次の行の実行が停止します)。 ...)。
リモートでログインするたびにサーバーのキーを機能させるにはどうすればよいですか?
最も簡単な方法は、SSHでエージェント転送を有効にして、サーバーではなくローカルシステムでエージェントを使用するようにすることです。それができない場合は、manページに示されているように実行してeval $(ssh-agent -s)
を実行できます。
これは、数か月前に.bashrcで作業して使用しているチーム用に作成したスクリプトからコピーされたものです。アイデアのコレクションからコンパイルされ、非互換性が見つかったため、複数のオペレーティングシステム/環境で動作するように調整されました。実行中のエージェントをチェックし、必要に応じてエージェントを開始します(他のシェルのデータを保存します)。次に、そのエージェントにキーが追加されているかどうかを確認し、追加されていない場合は、使用確認を使用して10時間(平日用に設計)追加します。必要に応じて、ssh-addの-cオプションを削除することで確認を削除できます。
SSH_ENV="$HOME/.bash_sshagent"
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
}
# 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 -q ssh-agent$ || {
start_agent;
}
else
start_agent;
fi
/usr/bin/ssh-add -l > /dev/null || {
echo No ssh identities detected. Running "ssh-add -c -t 36000"...
/usr/bin/ssh-add -c -t 36000;
}