1つの基本的なOpenSSH接続を介して複数のSSHトンネル(ローカルおよびリモート転送)がありますか?良いアイデア?

1つの基本的なOpenSSH接続を介して複数のSSHトンネル(ローカルおよびリモート転送)がありますか?良いアイデア?

質問設定された SSH チャネルの使用持つ回答これが私の関心を呼び起こしました。既存のSSH接続を再利用できることを示します。しかし、もっと読むと、このソリューションが私の場合(同時に複数のトンネル)では機能しない可能性があることがわかりました。

私は2012年3月14日にOpenSSH_5.9p1 Debian-5ubuntu1.1、OpenSSL 1.0.1(Kubuntu 12.04)を使用しています。

現在bashスクリプトで実行されている作業は次のとおりです。

echo "establishing SSH tunnel for SFTP && opening Dolpin with SFTP connection to remote computer..."
ssh -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" -fL $PORT_NUMBER:localhost:$PORT_NUMBER sleep 20; dolphin sftp://HostSftp:$PORT_NUMBER &

echo "establishing SSH tunnel for VNC && connecting to VNC server for remote desktop support..."
sudo ssh -fL 5901:localhost:$VNC_PORT_NUMBER -i "$ID_RSA" "$MIDDLEMAN_USER@$MIDDLEMAN_SERVER" sleep 20; vncviewer localhost:5901

私の懸念(そしてこれが私にとってうまくいかないと思う理由)は次のとおりです。

欠点は、sshの一部の使用が複数の接続で機能しない可能性があることです。最も注目すべきは、git、svn、またはrsyncなどのトンネリングまたはポート転送を使用するコマンドです。源泉

これ:

構成ファイルでLocalForwardまたはRemoteForwardを使用すると、微妙な問題が発生する可能性があります。 ...SSH1(しかし、OpenSSHではありません)ソリューションを提供します。源泉

私は説明と説明を探しています。

  1. 1つのプライマリ接続で上記の2つのトンネルを設定できますか?
  2. 別の接続を確立するのと同じくらい安定していますか?
  3. 上記の両方が該当する場合はどうすればよいですか?

ありがとう

ベストアンサー1

デフォルト接続を使用しても、接続共有(-S、、、-M-o ControlXXXに関連するオプションを除いてsshを呼び出す方法は変わりません。マスター接続で変更されるすべては、マスター接続がすでに確立されている場合、新しいスレーブ接続が再認証するのではなく、その接続を通過することです。これにより、パスワードやキーを提供する必要がなくなり、新しい接続設定が大幅に高速化されます。

多重化はアプリケーションに影響を与えません。ファイアウォールの場合は異なります。複数の接続ではなく、1つの接続しかありません。

なぜかはわかりませんが新カート「sshは多重化された接続では機能しない可能性があります。特に、git、svn、またはrsyncなどのトンネリングまたはポート転送コマンドがあります。」多重化なしで動作する場合、アプリケーションは違います。

これSSHの最終ガイド接続の多重化を意味するのではなく、「設定ファイルでLocalForwardまたはRemoteForwardを使用してください」 (この本は、接続の多重化が存在する前にさかのぼります。)これは、特定のポートで受信トンネルを一度だけ設定できることを意味します。これは再利用に関するものではなく、配信に関するものです。

多重化の使用を開始するには、次の行を に追加します~/.ssh/config

ControlMaster auto
ControlPath ~/.ssh/%l_%h_%p_%r.multiplex

それはすべてです。ホストへの接続を確立し、明示的に終了するまでそれを維持するには、を実行しますssh -N destination &。もはやデフォルト接続が必要ない場合は、クライアントをシャットダウンします。それでも以前と同じようにトンネルを設定する必要があります。

ホストを複数のリレーとして使用する場合は、次の設定をお勧めします。靴下代理人。ssh -D 1234 destinationSOCKS対応アプリケーションを実行し、にあるSOCKSプロキシを使用するように指示しますlocalhost:1234。もちろん、これはSOCKSを理解するアプリケーションでのみ機能します。靴下SOCKSを認識しないアプリケーションへのほとんどのネットワーク接続はSOCKSプロキシを通過します(tsocksはライブラリ呼び出しをラッパー機能にリダイレクトすることによって機能します)。

おすすめ記事