web-dev-qa-db-ja.com

-f -NでバックグラウンドされたSSHセッションに接続するにはどうすればよいですか?

プロキシチェーンを使用してマシンをピボットオフする必要がある作業を行っているので、システムに接続して、そのようにローカルポートをバインドしています...

ssh -f -N -D 9000 [email protected]

…接続を開いた後、コマンドプロンプトに戻ります。次に、プロキシチェーンなどを使用して、Host.comを介してコマンドを実行できます。

私の質問は、Host.comでリモートシェルを取得できるように、同じセッションに接続/対話するにはどうすればよいですか?私が今やっている方法は、単純なssh [email protected]で別のsshセッションを開くことですが、私が開いた最初のセッションを利用する方法が必要だと思います。

7
Kevin

マルチプレックスを有効にして作成されていない場合は、作成できません。

次回次のようにバックグラウンドセッションを開始します。

ssh -f -N -M -S ~/.ssh/[email protected] -D 9000 [email protected]

ここで、-Mはマルチプレックスマスターモードを有効にし、-Sはソケットパスを設定します。

これで、ssh -S ~/.ssh/[email protected] dummyhostを使用して、同じ接続で2番目のセッションを開くことができます。 -O exit-O check、およびその他のさまざまなオプションを指定することにより、マスターを制御することができます。 (残念ながら、-O forwardはごく最近追加されたものです。)

これを自動化するには、.ssh/configで次のオプションを使用できます。

Host *
    ControlPath ~/.ssh/S.%l.%r@%h:%p
    ControlMaster auto
    ControlPersist 10m

ControlPathを設定すると、毎回-Sを指定する必要がなくなります。

ControlMaster autoを設定すると、すべての新しい接続がマルチプレックスマスターとしてバックグラウンドで自動的に続行されます。 (それがなくても、ssh -fNM Hostで新しいマスターを開始できます)。

ControlPersist 10mを設定すると、アクティブなセッションがない場合、自動マスターは10分間留まります。 (これは最近追加されたオプションです。)

多重接続を介したバッチ転送により、インタラクティブセッションが非常に遅くなることに注意してください...

11
user1686

-f(バックグラウンドSSH)および-N(リモートコマンドを実行しない)パラメーターは省略して、次を使用します。

ssh -D 9000 [email protected]
0
davidgo