sshトンネルを設定するためのsshパラメータを頭で囲むことはできません。 今日、私はローカル転送のためにこれら二つのコマンドをグーグルしました。
ssh -f -L 2222:myserver.com:22 localhost -N
ssh -f -L 2222:localhost:22 myserver.com -N
結果は、どちらも同じように見えます。
それらの働き方に違いはありますか?
sshトンネルを設定するためのsshパラメータを頭で囲むことはできません。 今日、私はローカル転送のためにこれら二つのコマンドをグーグルしました。
ssh -f -L 2222:myserver.com:22 localhost -N
ssh -f -L 2222:localhost:22 myserver.com -N
結果は、どちらも同じように見えます。
それらの働き方に違いはありますか?
回答:
はい、違いがあります localhost そして myserver.com 異なるアドレス(異なるマシン)に解決してください。
あなたの例はportを使っているから 22 SSHの標準ポートです。この番号をに変更しました。 222 私の答えでは。ポイントは(ポートへの)キャリアのSSH接続との違いを伝えることです 22 デフォルトでは)およびSSHトンネルのターゲット。
結果は、どちらも同じように見えます。
将来の読者のためにそれを明確にするために:両方のコマンドはデータ入力を作る localhost:2222 ポートをlistenするプロセスに行きます 222 ( 22 元の質問で) myserver.com 機械。ここではTCPポートについて話しています。
ssh -f -L 2222:myserver.com:222 localhost -N
このコマンドで
localhost; myserver.com:222 ローカルポートに入るときとまったく同じ 2222、 そう この段階では追加の暗号化はありません (ローカルポートに入るデータ 2222 事前に暗号化されていてもいなくてもよい、これは独立している)。 myserver.com そのポートへの接続を見る 222 彼らのものではない(あなたのローカルホストから)外側から来るように localhost )、 そう 港 222 ファイアウォールでブロックされてはいけません 。 に直接接続した場合 myserver.com:222 の代わりに localhost:2222 結果は同じになるはずです myserver.com 違いはわかりません。だから私はこの最初のコマンドがほとんど役に立たないと考えているのです。 (なぜ「ほとんど」? - 最後に説明します)
ssh -f -L 2222:localhost:222 myserver.com -N
この場合
myserver.com; localhostすなわち、同じマシンに対してローカルに。 myserver.com そのポートへの接続を見る 222 それ自体から(ローカルに)来るように これはファイアウォールを通過するはずです ローカル接続をブロックすることは珍しいからです。待機プロセスは、ループバックインタフェースだけで待機することさえ可能です。 私にとっては、この2番目のコマンドが優れていることは明らかです。
最初のコマンドが役に立つ場合がある1つのシナリオ:別の(3番目の)コンピューターがアクセスする必要がある場合 myserver.com:222 そしてそれへの経路を持たず、ポートに接続する 2222 あなたのローカルホストの localhost )解決策があります。これには注意が必要です -g オプション ssh コマンド(参照 man ssh 詳しく知ることができ)。この目的には2つのコマンドのいずれかを使用できますが、SSHアクセスがない場合は myserver.com その場合、2番目のコマンドは機能しません。
まあ、3台目のコンピュータから完全にトンネルを構築することもできます。コマンドは次のようになります。
ssh -f -L 2222:myserver.com:222 ssh-server -N
# then connect to their own localhost:2222
明らかにこれにSSHアクセスが必要です ssh-server (きみの localhost )しかし、3台目のコンピュータがあなたの友人のもので、SSHにアクセスできないとしましょう。 ssh-server。あなたは(アクセス権を持つ)最初のコマンドで彼らのためにトンネルを構築することができます -g オプション。彼らはに接続する必要があります ssh-server:2222 それから。
正味の効果は同じです、あなたはポートからのトンネルで終わります 2222 に localhost 移植する 22 に myserver.comしかし、それらは少し違った働きをします。最初の例ではあなたがしている ssh localhost そしていくつかのフラグを追加するので、基本的に、あなたはログインしています localhost 再び。 2番目の例では、あなたは実行しています ssh myserver.com いくつかのフラグを使用して、リモートホストへの接続を作成しています。
-L (ここでは)3つの引数を取ります。トンネルの一方の端にあるローカルマシンのポート、もう一方の端にあるホスト(接続が確立された後)、そして最後にトンネルのリモート端にあるポートです。トンネル。
にトンネルすれば localhost へのトンネルを作成します myserver.com あなたは関係があります myserver.com。一方、あなたがに接続した場合 myserver.com そしてトンネルへ localhost 接続のリモート側からもう一度接続します。 myserver.com。
そのため、最終的な効果は同じものになりますが、あなたのホストになります。 ssh (トンネルを設定するために)認証する必要があるのは異なります。