結論として

結論として

私はSSHポート転送を試していますが、何かが混乱していることがわかりました。次のコマンドが同じことをするようです。

ssh -NfL 192.168.121.215:2222:vm2.local:22 vm2.local
ssh -NfL 192.168.121.215:2223:localhost:22 vm2.local
ssh -NfL 192.168.121.215:2224:vm2.local:22 localhost

PCから流域2222、2223、2224に接続すると、すべてvm2.localに移動します。

$ ss -antp # on vm1.local (192.168.121.215)
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128         192.168.121.215:2222                     *:*      users:(("ssh",10170,4))
LISTEN     0      128         192.168.121.215:2223                     *:*      users:(("ssh",10178,4))
LISTEN     0      128         192.168.121.215:2224                     *:*      users:(("ssh",10225,4))
LISTEN     0      128                       *:22                       *:*      users:(("sshd",836,3))
...

上記のコマンドの違いは何ですか?トンネルは少し違って作られましたか?マニュアルページによると、最初のコマンドは正確で、2番目のコマンドはいくつかのWebサイトから取得され、最後のコマンドは私が犯した間違いであり、結果も機能します。

ベストアンサー1

そこはいあなたの場合には重要ではなくても違いがあります。私が絵をうまく描かずに言葉で説明しようとしたらこんな感じです。

  1. ssh -NfL 192.168.121.215:2222:vm2.local:22 vm2.local
    

    これにより、各エンド(ローカルおよびリモート)がローカルIPアドレスにバインドされるため、このセキュアチャネルを介してホストとポート間vm2.localの接続を暗号化できます。

  2. ssh -NfL 192.168.121.215:2223:localhost:22 vm2.local
    

    これは上記と同じですが、パブリックネットワークインターフェイスのアドレスをバインドするのではなく、ローカルインターフェイスのアドレス(127.0.0.1)をバインドします。 SSHポートの場合は違いはありませんが(両方のポートでリッスンする)、リスニングのみを行うサービスlocalhost(たとえばmysql)では重要です。

  3. ssh -NfL 192.168.121.215:2224:vm2.local:22 localhost
    

    これはローカルホストに安全に接続し(デフォルトではセキュリティ効果はありません)、リモートホストに直接バインドするため、ポートに書き込むすべての内容は2224コンピュータ間で直接転送されます。暗号化されていない(SSH接続には問題ありませんが、さまざまな種類のトラフィックには重要です。)

結論として

2番目のケースの使用方法を学ぶ必要がありますが、転送されたポートに外部からアクセスする必要がない場合は、localhost次のように常にローカル側でバインドする必要があります。

ssh -NfL localhost:2223:localhost:22 vm2.local

localhostデフォルトはどこにありますか?

ssh -NfL 2223:localhost:22 vm2.local

おすすめ記事