SSH 轉送在本地有效,但在遠端失敗

SSH 轉送在本地有效,但在遠端失敗

我在遠端機器上做了連接埠SSH本地轉送:

ssh -N -L 127.0.0.1:3388:127.0.0.1:22 localhost

它在遠端機器本身上工作:

telnet localhost 3388

回報

Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4

但是,當我從本機使用此轉發時:

telnet remote.ip 3388

它失敗:

Trying remote.ip...
telnet: Unable to connect to remote host: Connection refused

有人可能認為遠端機器的 3388 連接埠被防火牆或網路上的其他東西阻止了,所以我關閉了 SSH 轉送並測試了一個 http 伺服器偵聽遠端機器上的 3388 連接埠:

python3 -m http.server 3388

然後我從本機電腦連接到該連接埠:

telnet remote.ip 3388

結果給出

Trying remote.ip...
Connected to remote.ip.
Escape character is '^]'.
quit
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <title>Error response</title>
    </head>
    <body>
        <h1>Error response</h1>
        <p>Error code: 400</p>
        <p>Message: Bad request syntax ('quit ').</p>
        <p>Error code explanation: HTTPStatus.BAD_REQUEST - Bad request syntax or unsupported method.</p>
    </body>
</html>
Connection closed by foreign host.

這意味著我的本機電腦可以存取遠端電腦上的連接埠 3388。那為什麼單獨的時候SSH轉送和網路都可以正常運作,但組合起來就不行了呢?有人知道如何解決這個問題嗎?謝謝。

答案1

您設定了 SSH 本機轉發,使其僅偵聽本機主機連接埠 3388。

為了將轉送連接埠暴露給網路上的其他機器,您需要將其綁定到可到達的位址,例如 192.168.1.5 或 0.0.0.0(所有介面)。

例如ssh -N -L 0.0.0.0:3388:127.0.0.1:22 localhost

相關內容