次の2つのコマンド間に違いはありますか?
ssh -g -L 8080:localhost:80 [email protected]
ssh -L 8080:0.0.0.0:80 [email protected]
答え1
これは互いに関係のない2つの値です。
openssh
オプション-g
ssh_config
クライアントオプションの指定と同じ-o GatewayPorts=yes
。前に配置できる未作成のオプションセクションに影響します。-L
オプション:
-L [bind_address:]port:host:hostport
-g
(GatewayPorts
デフォルト)またはローカルバインディングの両方が指定されていない場合、no
sshはデフォルトで次のバインディングに設定されます。ローカルホスト(これは再びIPv4 127.0.0.1
+ IPv6を意味します::1
)。有効-g
(または-o GatewayPorts=yes
)を使用すると、デフォルトはINADDR_ANY(0.0.0.0
)+ in6addr_any(::
)です。存在するデフォルト値やオプションに関係なく、オプションにバインドするIPアドレスを追加してクライアントのローカルアドレスを上書きできます-L
。
だから:
ssh -g -L 8080:localhost:80 [email protected]
以下と同じ:
ssh -L 0.0.0.0:8080:localhost:80 [email protected]
または、IPv6対応システムでは(両方のプロトコルが必要な場合):
ssh -L 0.0.0.0:8080:localhost:80 -L '[::]:8080:localhost:80' [email protected]
これで-g
、OPに関連しない2番目のコマンドは次のようになります。
ssh -L 8080:0.0.0.0:80 [email protected]
一般的に明らかなエラー:リモート側に通知します。つながるいいえ製本INADDR_ANYへ。
一つのために目的地つまり、ターゲットを選択せずに、システムにソケットの接続時期を決定させてください。この場合、リモートシステムは(sshd
リモートサーバーからの要求に応じて)独自のアドレスのいずれかを選択し、127.0.0.1または$ HOSTを選択できます。それとも私たちは知りません(リモートシステムテストでは127.0.0.1)。
connect(4, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("0.0.0.0")}, 16)
127.0.0.1から127.0.0.1までの実際の接続(マイテスト)