以下は、SSHプロキシ設定を管理するために使用するものです。
#!/bin/echo "Must source this:"
## Ensure that ~/.ssh/env contains valid values
unset SSH_AGENT_PID SSH_ENV_REFRESH
[ -r ~/.ssh/env ] && . ~/.ssh/env
[ -n "$SSH_AGENT_PID" ] || {
# No env file (or it's badly corrupted:
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
# Ping the agent process:
kill -0 "$SSH_AGENT_PID" >& /dev/null || {
# No process, so start a new one:
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
ssh-add -l &> /dev/null
[ "$?" -gt 1 ] && {
# Process alive but unable to be contacted
# for some reason (wedged/defunct process,
# or damaged/corrupt UNIX domain socket node?)
# So kill it:
kill "$SSH_AGENT_PID" >& /dev/null
# ... with extreme prejudice if necessary:
kill -0 "$SSH_AGENT_PID" >& /dev/null \
|| kill kill -9 "$SSH_AGENT_PID" >& /dev/null
# ... and start a new one
eval $(ssh-agent &>/dev/null) &> /dev/null
SSH_ENV_REFRESH=1
}
[ -z "$SSH_ENV_REFRESH" ] || {
# Over-write old env file:
printenv | grep "^SSH_A" > ~/.ssh/env
# Append export command:
echo "export SSH_AGENT_PID SSH_AUTH_SOCK" >> ~/.ssh/env
# Load the (null-passphrase) identites into the agent:
ssh-add < /dev/null &> /dev/null
}
. ~/lib/sshagent.sh
その目的は()から派生します。~/.bashrc他のログインやシェルの起動ファイル...またはクローン操作も可能です。それは私にとって効果的でしたが、ここにいる人がそれを見直し、私が逃した極端なケースについてアドバイスを提供したいと思います。
~/.bash_loginで実行しようとしましたが、場合によってはシェルが設定を選択できないことがありました(Xディスプレイマネージャ、リモートSSH非ログインセッションのようです...コマンド呼び出しを使用)SSH)。場合によっては、何らかの理由でエージェントプロセスが再起動されても、以前の設定は保持され更新されません。だから私は実行します~/.bashrc提案されているように偽の出力を避けるようにしてください。~/.bashrc一般的に言えば。
それでは、明らかなコーナーケースやバグがありますか?これがこのようなことに意味がありますか?/etc/bashrc?他のシェルに合理的に移植可能ですか?
答え1
&> /dev/null
スクリプトの移植性の問題の1つは、stdoutおよびstderrリダイレクトを使用することです。これは他のシェルには必ずしも適用されない bashism です。 (私は最近これにかみました。)より移植可能な方法は> /dev/null 2>&1
。
答え2
なぜ自分で書きたいのですか?という便利で小さな製品を使ってみてはいかがでしょうかkeychain
?
これはGentoo用キーチェーンガイド(おそらく最新バージョンでしょう。Funtooについての同じ記事)
これは、基本的にパスワードを入力する必要なくパスワードで保護されたキーを使用できるようにする小さなプログラムです。 (使用しているディストリビューションで利用できる必要があります)
GentooのOpen SSH Key Managementシリーズにも興味があります。パート1、パート2とパート3。これには、あなたがしたいことがいくつか含まれているようです。