SSHポート転送

SSHポート転送

SSH トンネリングを使用して、特定のマシンからマシンのグループに接続したいのですが、見つかったすべてのソリューションでは、SSH 構成ファイルでマシンごとにエントリを指定する必要があります。次のようにワイルドカードを使用したいと思います。

   Host *.mydomain.com
   // some magic here

現時点で見つかった最善の解決策は次のとおりです。

http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no-stinking-vpn-software/

答え1

トンネル サーバーでncnetcatなどのプログラムを実行できる場合は、ポート転送の代わりに を使用できます。socatProxyCommand

# Only necessary if it matches the *.mydomain.com wildcard. Useless otherwise.
Host tunnelbox.mydomain.com
    ProxyCommand none

Host *.mydomain.com
    ProxyCommand ssh tunnelbox.mydomain.com nc %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com ncat %h %p
    #ProxyCommand ssh tunnelbox.mydomain.com socat stdio tcp:%h:%p
    #ProxyCommand ssh tunnelbox.mydomain.com netcat %h %p

トンネル サーバーにインストールされているツールに応じて、適切な ProxyCommand のコメントを解除します。


トンネルが確立されるたびに個別のSSH接続が確立および切断されるため、SOCKS経由よりも接続が遅くなることに注意してください。(パフォーマンスには影響しません。ただし、接続は可能です。

SSH バージョンがサポートしている場合は、接続の多重化を有効にすることができます。

Host tunnelbox.mydomain.com
    ControlMaster no
    ControlPath none

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

関連情報