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
(トンネルを設定するために)認証する必要があるのは異なります。