私は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
そこはいあなたの場合には重要ではなくても違いがあります。私が絵をうまく描かずに言葉で説明しようとしたらこんな感じです。
ssh -NfL 192.168.121.215:2222:vm2.local:22 vm2.local
これにより、各エンド(ローカルおよびリモート)がローカルIPアドレスにバインドされるため、このセキュアチャネルを介してホストとポート間
vm2.local
の接続を暗号化できます。ssh -NfL 192.168.121.215:2223:localhost:22 vm2.local
これは上記と同じですが、パブリックネットワークインターフェイスのアドレスをバインドするのではなく、ローカルインターフェイスのアドレス(
127.0.0.1
)をバインドします。 SSHポートの場合は違いはありませんが(両方のポートでリッスンする)、リスニングのみを行うサービスlocalhost
(たとえばmysql
)では重要です。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