ControlMaster SSHセッションでプログラムによるポート転送を追加する


9

OpenSSHのControlMaster / ControlPath機能について知りました。これにより、単一のSSH接続を使用して複数の端末を実行できます。

SSHを使用してポート転送を使用し、暗号化および認証されたVNCセッションを取得することが多いので、すでに接続が確立されているリモートサーバーにポート転送を追加できないことをすぐに認識しました。これは最悪です。

ときどき、実行中のSSHターミナルセッションで〜Cと入力すると、この制限を回避できることがわかりました。これにより、ポート転送を追加または削除できるコマンドラインが開きます。

私の質問は次のとおりです。ControlMaster/ ControlPath機能を使用している既存のSSHセッションにポート転送を追加するにはどうすればよいですか。そのSSHセッション内のターミナルセッションにアクセスする必要はありません。安全なトンネルVNC接続を開始するスクリプトを有効にして、ポート転送を追加および後で削除するために、これが必要です。

(GNU Screenやtmuxなどのターミナルマルチプレクサーを使用できることは知っていますが、実際には既にこれを行っています。しかし、サーバー上の理由から、1つのSSHセッションだけを使用するというアイデアが気に入っています。)


1
あなたがこれを行う方法を見つけるかどうか私は干渉されますが、あなたはそうしないと思います。実際には参加していないSSHセッションのプロパティをプログラムで制御することは、大きなセキュリティ問題のようです。
カレブ

1
ナンセンス!SSHセッションのプロパティをプログラムで制御すると、どのようにして大きなセキュリティ問題が発生しますか?解決策は、実際にはかなり簡単です:serverfault.com/a/340361/93109
aculich

質問はポートフォワーディングの追加についてのみ尋ねているので、受け入れられた回答によりよく一致します。:私はここで、その後それらを削除する方法についての質問尋ねserverfault.com/q/457295/50950を
AEF

回答:


9

それは実際には非常に簡単です。ctl_cmd -O forwardを既存のコマンドに追加するだけで、次のようになります。

ssh -M -L5555:localhost:22 remotehost

になる:

ssh -O forward -M -L5555:localhost:22 remotehost

sshmanページには論じ-O ctl_cmdオプション:

-O ctl_cmd
        Control an active connection multiplexing master process.  When the -O option is
        specified, the ctl_cmd argument is interpreted and passed to the master process.
        Valid commands are: “check” (check that the master process is running), “forward”
        (request forwardings without command execution), “exit” (request the master to
        exit), and “stop” (request the master to stop accepting further multiplexing
        requests).

もちろん、これはファイルまたはコマンドラインで有効になっていることを前提とControlMaster yesしてい~/ssh/configます-M


1
あなたはここに関連する質問にお答えしてみてくださいでした:serverfault.com/q/457295/50950を
AEF
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.