youatwork@officepc$ autossh -R 12345:localhost:22 notroot@serverpc
後:
you@homepc$ autossh -L 23456:localhost:12345 notroot@serverpc
you@homepc$ ssh youatwork@localhost -p 23456
できることはこれです。ステップ1で、リモートポートをオフィスのPCからサーバーに転送します(12345
例として使用されます。1024を超えるポートはすべて実行する必要があります)。サーバーの12345に接続すると、officepcのポート22に接続されます。
ステップ2で、自宅のマシンからポート23456をサーバー上の12345に転送します(ステップ1で設定したように、officepc:22に転送されます)。
ステップ3では、オフィスのPCログインでローカルポート23456に接続します。これは、ステップ2でサーバーのポート12345に転送され、ステップ1でオフィスPCに転送されます。
転送にautosshを使用していることに注意してください。これは、トンネルが切断された場合に自動的にトンネルに再接続するsshラッパーです。ただし、接続が切断されない限り、通常のsshも機能します。
考えられる脆弱性があります。serverpcのlocalhost:12345に接続できる人は誰でもofficepc:22に接続し、ハッキングを試みることができます。(あなたはSSHサーバを実行している場合は、とにかく、デフォルトでは上にある基本的な保護の上にそれを固定する必要があることを、私は、少なくともrootログインを無効にし、パスワード認証を無効にすることをお勧めします-例えば参照これを)
編集:同じ設定でこれを確認しましたが、動作します。GatewayPorts no
ローカルトンネルではなく、世界全体に開かれているポートにのみ影響します。転送されたポートは次のとおりです。
homepc:
outgoing ssh to serverpc:22
listening localhost:23456 forwarded through ssh tunnel
serverpc:
listening ssh at *:22
incoming localhost ssh tunnel (from homepc) forwarded to localhost:12345
listening localhost ssh tunnel (from officepc) forwarded from localhost:12345
officepc:
outgoing ssh to serverpc:22
incoming localhost through ssh tunnel (from serverpc) forwarded to localhost:22
したがって、ネットワークスタックに関する限り、それはそれぞれのループバックインターフェイス上のすべてのローカルトラフィック(およびserverpc への ssh接続)です。したがって、GatewayPorts
まったくチェックされません。
ただし、ディレクティブがあります AllowTcpForwarding
。それがあればno
何の転送が全てではなく、さらにループバックインターフェイスを介し許されないとして、このセットアップは失敗します。
注意事項:
autosshと最近のsshを使用している場合は、SSHの使用することもできますServerAliveInterval
し、ServerAliveCountMax
トンネルを維持するために。Autosshにはチェックが組み込まれていますが、明らかにFedoraにはいくつかの問題があります。-M0
それを無効にし、-oServerAliveInterval=20 -oServerAliveCountMax=3
接続が確立されているかどうかを確認します-20秒ごとに試行し、3回連続で失敗した場合、sshを停止します(そしてautosshは新しい接続を作成します):
autossh -M0 -R 12345:localhost:22 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
autossh -M0 -L 23456:localhost:12345 -oServerAliveInterval=20 -oServerAliveCountMax=3 notroot@serverpc
転送が失敗した場合、sshトンネルを再起動すると便利です。 -oExitOnForwardFailure=yes
ポートが既にバインドされている場合、SSH接続は機能しますが、転送されたトンネルはありません。
~/.ssh/config
オプション(およびポート)を使用することをお勧めします。そうしないと、コマンドラインが冗長になりすぎます。例えば:
Host fwdserverpc
Hostname serverpc
User notroot
ServerAliveInterval 20
ServerAliveCountMax 3
ExitOnForwardFailure yes
LocalForward 23456 localhost:12345
その後、サーバーエイリアスのみを使用できます。
autossh -M0 fwdserverpc