ポート転送を使用してSSH接続を確立し、リモートホストがローカルに転送されたポートに次のように接続できるようにしました。
ssh -g -L 5115:localhost:5115 <server>
次のエラーメッセージが表示されても、接続は正常に機能します。
バインディング:アドレスはすでに使用中です。
どのポートを選択しても、このメッセージが表示されます。接続が正しく機能しているようですが、なぜこのメッセージが表示されるのか疑問に思います。私は何が間違っていましたか?
答え1
注文する:
ssh -g -L 5115:localhost:5115 <server>
ローカルssh
プロセスが0.0.0.0ポート5115にバインドされ、転送される接続をリッスンします。受信されるエラーメッセージは、他のプロセスがすでにこのアドレスとポートにバインドされており、ssh
操作を実行できないことを示します。
netstatを実行してこれを確認できます。
netstat -an | grep 5115
次の行が表示されることがあります。
tcp4 0 0 *.22 *.* LISTEN
「LISTEN」は、何かが接続を聞いているという意味です。 」.22"はアドレスとポートで、0.0.0.0または"「」は「すべてのインターフェース」を意味します。
ここで選択できるオプションは、ポート5115を使用する別のプログラムを見つけて停止するか、SSHトンネルに別のローカルポートを使用することです。
答え2
Linuxを実行している場合は、rootとして次のコマンドを実行して警告をミュートできます。
エコ1> /proc/sys/net/ipv6/bindv6only
何が起こっているのかは、sshがPF_INETソケットをバインドする[::]:5115
前にPF_INET6ソケットをバインドすることです0.0.0.0:5115
。 PF_INET6ソケットは2つのプロトコルにバインドされているため、2番目のソケットをバインドしようとすると失敗します。開くとbindv6only
、PF_INET6ソケットのIPv4アドレスに触れることができなくなります。
あまり破壊的なアプローチは、4つの引数形式を使用することです-L
。ここでは、バインディングアドレスを明示的に指定できます(使用0.0.0.0
)。