我正在运行一个程序,可以让您在浏览器中与其交互。为此,您运行该程序并在浏览器中打开“localhost:8080”(如果 8080 是正确的端口)。
但是,我正在服务器上运行该程序,并尝试通过 SSH 连接使用自己的浏览器在自己的计算机上访问它。这意味着我必须在 SSH 连接中使用与程序使用的端口相同的端口。但这不起作用,我的理论是该程序和我的 SSH 连接正在争夺端口。
换句话说,我的问题是: 如何访问服务器上的 8080 端口,而不使用 8080 端口进行 SSH 连接?
附加说明:我尝试在 SSH 连接中使用 X 转发(-X 选项),并在服务器上运行浏览器。这可行,但速度非常慢。
答案1
ssh
使用隧道将本地端口转发到远程服务器的本地端口,而不是在远程服务器上运行浏览器。
假设您在远程主机上有端口 8080,此命令将在本地计算机上创建一个侦听端口 8080(第一个localhost:8080
),并将所有连接通过隧道传输到该端口以localhost:8080
运行在远程主机的上下文中- 即该remote_host 本身上的端口8080。告诉-f
ssh 继续在后台运行;如果您希望ssh
会话在终端中保持打开状态,请忽略此项。
local$ ssh -f -L localhost:8080:localhost:8080 remote_host
local$ firefox http://localhost:8080/
答案2
不确定我是否正确理解你的问题,首先 SSH 默认在端口 22 上运行。
现在有趣的是,您首先检查 sshd 是否正在运行,如果您修改了配置文件,则检查它正在运行的端口。
请注意,如果您在端口 8080 上运行 Web 界面(并且它不断侦听),您将无法通过此端口连接到任何其他应用程序。