ssh
を使用してローカルポートのTCP接続をリモートサーバーのUnixソケットに転送しようとしていますが、エラーが発生し続けます。
まず、リモートサーバーでnc
をリッスンさせることから始めました。
remote$ nc -lU /tmp/socket
次に、SSHを使用してポートフォワードを設定します。
local$ ssh -L127.0.0.1:5000:/tmp/socket -vv #remote Host here#
SSHとポートフォワーディングは機能しているようです。
debug1: Local connections to 127.0.0.1:5000 forwarded to remote address /tmp/socket:-2
debug1: Local forwarding listening on 127.0.0.1 port 5000.
debug1: channel 0: new [port listener]
debug1: channel 1: new [client-session]
次に、ブラウザで127.0.0.1:5000
にアクセスしようとすると、ターミナルに次のエラーメッセージが表示されます。
debug1: channel 2: new [[email protected]]
channel 2: open failed: administratively prohibited: open failed
debug1: channel 2: free: [email protected]: listening port 5000 for /tmp/socket port -2, connect from 127.0.0.1 port 41372 to 127.0.0.1 port 5000, nchannels 3
それは何度も発生し、接続は失敗します。
どうすればこれを設定できますか? (リモートサーバーにrootを必要としない、または新しいソフトウェアをローカルにインストールする必要のないソリューションをお勧めします。)
nc -klU /tmp/socket
それ以外の場合、ncは単一の接続を受け入れて処理してから終了します。 -k
は、着信接続を処理するための新しいプロセスをncフォークオフし、accept()ループを続行します。
sshは、「管理上禁止されている」過負荷のように見えます。ソケットは存在せず、socket-exists-but-nothing-is-listeningです。