SSH ではなぜ同じポートに複数のローカル トンネルを作成できるのでしょうか?

SSH ではなぜ同じポートに複数のローカル トンネルを作成できるのでしょうか?

ご覧のとおり、すでに使用されているローカル ポートでリッスンする別のトンネルを作成しようとすると、エラー メッセージが表示されますが、トンネルは作成されています。特定のポートを使用している別のプロセスがある場合、ssh が特定のポートでトンネルを作成しないように強制できますか?

┌─[wakatana@~] [79 files, 89Mb]
└──> ps -elf | grep 'ssh -fN'
1 S wakatana     4263     1  0  80   0 - 10660 -      May02 ?        00:00:00 ssh -fN -L 5901:localhost:5901 [email protected]
0 S wakatana     6340  4754  0  80   0 -  1959 -      00:22 pts/7    00:00:00 grep --color=auto ssh -fN

┌─[wakatana@~] [79 files, 89Mb]
└──> ssh -fN -L 5900:192.168.1.1:3389 [email protected]
┌─[wakatana@~] [79 files, 89Mb]
└──> ps -elf | grep 'ssh -fN'
1 S wakatana     4263     1  0  80   0 - 10660 -      May02 ?        00:00:00 ssh -fN -L 5901:localhost:5901 [email protected]
1 S wakatana     6371     1  0  80   0 - 10355 -      00:22 ?        00:00:00 ssh -fN -L 5900:192.168.1.1:3389 [email protected]
0 S wakatana     6381  4754  0  80   0 -  1959 -      00:22 pts/7    00:00:00 grep --color=auto ssh -fN

┌─[wakatana@~] [79 files, 89Mb]
└──> ssh -fN -L 5900:192.168.1.3:3389 [email protected]
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 5900
Could not request local forwarding.
┌─[wakatana@~] [79 files, 89Mb]
└──> ps -elf | grep 'ssh -fN'
1 S wakatana     4263     1  0  80   0 - 10660 -      May02 ?        00:00:00 ssh -fN -L 5901:localhost:5901 [email protected]
1 S wakatana     6371     1  0  80   0 - 10355 -      00:22 ?        00:00:00 ssh -fN -L 5900:192.168.1.1:3389 [email protected]
1 S wakatana     6391     1  0  80   0 - 10355 -      00:23 ?        00:00:00 ssh -fN -L 5900:192.168.1.3:3389 [email protected]
0 R wakatana     6401  4754  0  80   0 -  1958 -      00:23 pts/7    00:00:00 grep --color=auto ssh -fN

答え1

あなたの質問を整理する方法を考えようとしましたが、時間がありません。私が答えます: 「ExitOnForwardFailure」オプションを yes に設定する必要があります。

$ ssh -fN -o ExitOnForwardFailure=yes -L 5900:192.168.1.1:3389 [email protected]
$ ssh -fN -o ExitOnForwardFailure=yes -L 5900:192.168.1.3:3389 [email protected] 
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 5900
Could not request local forwarding.
$ ps auwwx | grep ssh | grep 1111
daniel          94948   0.0  0.0  2461204    520   ??  Ss    2:56pm   0:00.00 ssh -Nf -o ExitOnForwardFailure=yes -L 5900:192.168.1.1:3389 MY.PUB.IP.ADDR

関連情報