
ssh-agent
私は ssh パススルーを頻繁に使用するので、Cygwin を起動するときに起動するようにしたいと思います。
以下を追加してみました:
eval `ssh-agent.exe`
私の ですが、 を使用して新しいターミナル ウィンドウを開く.bashrc
たびにが実行され、新しいが作成されますが、これは望ましくなく、パススルーに支障をきたします。Alt-F2
.bashrc
ssh-agent
次に、eval コマンドを に移動してみました.bash_profile
が、これも同じ問題が発生します。新しいターミナル ウィンドウはすべて新しいログイン シェルと見なされるようです。
3 番目のオプションは を使用することですが、私はこれについて最近知ったばかりで、この特定の目的のためにこれをどのように使用すればよいのか、また、おそらくもっと重要なのは、サービスが作成された場所からと情報を、作成されたすべての新しいシェルにcygrunsrv
渡す方法が明確ではありません。SSH_AUTH_SOCK
SSH_AGENT_PID
この結果 (単一の ssh-agent が実行されて待機し、その情報が新しく開かれたシェルですぐに使用できるようになる) を達成するための最善の方法に関する提案を歓迎します。
答え1
にインストールすることもできます.bashrc
が、再度起動する前に、すでに実行されているかどうかを確認する必要があります。たとえば、次のようにします。
if [ -z "$SSH_AUTH_SOCK" ]; then
(umask 077; ssh-agent > "$HOME/.ssh/environment")
ssh-add
fi
プロセスの一環として。
Also, if the agent is not running, you could first test if that environment file exists and source it like
environ="$HOME/.ssh/environment"
if [ -f "$environ" ]; then
. "$environ" >/dev/null
fi
if [ -z "$SSH_AUTH_SOCK" ] || ! ps -p "$SSH_AGENT_PID" | grep -q ssh-agent; then
(umask 077; ssh-agent > "$environ")
ssh-add
fi
これについては長い回答で詳しく説明されていますここU&Lサイトにて。
私はこれと似たようなことをしますが、environ
ホーム ディレクトリがネットワーク共有上にあり、エージェントを異なるホストで同時に実行したいので、ファイルに現在のホスト名を含めます。
そして、これがプロセス間で渡される変数を取得する方法に関する質問にどのように答えるかを明確に示すためにSSH_AUTH_SOCK
、出力をssh-agent
ファイルに保存し、各シェルで再度ソースします。