0

共有ホスト (WebFaction) に ssh しssh-agent、mercurial リポジトリ (BitBucket) への接続を確立するために使用します。エージェントを次のように呼び出します。

eval `ssh-agent`

これにより、エージェントの pid が吐き出され、関連する環境変数が設定されます。次に、次のように ssh-add を使用して ID を追加します (パスフレーズを入力した後)。

ssh-add /path/to/a/key

ssh 接続が最終的にタイムアウトになり、サーバーから切断されます。再度ログインすると、Hg サーバーに接続できなくなったので、次のようにします。

ps aux | grep 1234.*ssh-agent`
kill -SIGHUP 43210

そして、投稿の上部にある 2 つのコマンドを繰り返します (つまり、evalと callを使用してエージェントを呼び出しますssh-add)。

このプロセスを回避し、最初に生成されたエージェントへの「参照」を維持するための確立されたイディオムがあると確信しています。最初のコマンドの I/O をファイルにリダイレクトしようとしましたが ( .bashrc.

ホストに SSH 接続するたびにこのプロセスを実行する必要がないようにするにはどうすればよいですか?

私の *NIX スキルは弱いので、投稿のあらゆる側面に対する建設的な批判を歓迎しssh-agentます。

4

1 に答える 1

0

簡潔な答え:

ssh-agent をローカルで実行し、ID を追加ssh -A user@host.webfaction.comすると、リモート ホスト上のセキュア シェルにローカル エージェントの ID が提供されます。

長い答え:

チャールズが提案したように、エージェント転送が解決策です。

最初は、anssh user@host.webfaction.comを発行して、リモート ホストの安全なセッション内から hg+ssh を使用して BitBucket リポジトリに接続できると思っていました。しかし、それは失敗したので、ForwardAgent および AgentForwardingEnabled フラグを調査しました。

リモートホストに秘密鍵を保持することを含む .bashrc での回避策に落ち着かなければならないと考えて、シェルスクリプトソリューションを探しに行きましたが、 SuperUserのこの回答によってこのクラッジから免れました。これは完璧であり、クライアント構成なしで動作します (WebFaction で sshd サーバーがどのように構成されているかわかりません)。

余談ですが、私の質問では、次のように投稿しました。

ps aux | grep 1234.*ssh-agent`
kill -SIGHUP 43210 

しかし、これは実際には非効率的であり、ユーザーは自分の uid を知っている必要があります ( 経由で入手可能/etc/passwd)。pgrepはるかに簡単です:

pgrep -u username process-name
于 2012-08-02T19:50:18.887 に答える