私は現在、多くの短いSSH接続を行う必要があるRuby(Rails)アプリケーションを持っています。これはRuby Net :: SSHライブラリを使ってうまくいきますが、コマンドを作成するたびにアプリがログインしてネゴシエートする必要がありますが、遅すぎます。Ruby Net:SSH Control Master?
Ruby Net :: SSHでControl Masterを有効にする方法はありますか?コマンドラインでのテストでは、接続がすでに開いているため(キーがネゴシエートされているなど)、最初のログイン後のログインが非常に高速になります。
Net :: SSHでこれを行う方法がない場合は、誰でもそれを実行できる代替ライブラリを提案できますか?
これは一般的な要件である必要がありますので、誰かが助けてくれることを願っています。
ありがとうございます!
これは解決策かもしれません - 私はそれに戻ってくることができるように接続を開いたままにする方法はありますか?例えば。ユーザはSSHを必要とする何かをするために接続を開いてから、しばらく何か他のことをして(スレッドが完了するように)、別のSSHコマンドをやり直すことができます。私が理解しているように、Control Masterは基本的にこの接続を認証された状態に保ちますが、あなたのソリューションはこのような永続的なセッションを可能にしますか? –
私は実際にControlMasterを使用していないので、どのように動作するのか分かりませんが、上記のようなコードを使用すると、スレッドサーバーは通常スレッドプールを持ち、すべての要求に対して新しいスレッドを作成しないため、ユーザー固有の接続が必要な場合は、上記のように直接接続を格納する代わりにハッシュを使用してください。 – Schmurfy
おかげで、これは動作しているようです - あなたは(各ユーザーが唯一の独自のサーバーに接続すると、これは、間違いなく必要条件である)、ユーザー固有の接続のためのハッシュを使用して言及した - これは、ユーザーのハッシュに保存される(例えば
User.ssh_connection = Net::SSH.connect(...)
) –