79

我的实验室在服务器上运行 RStudio。几周前,在我表弟的家里,我成功地通过 ssh 连接到服务器,并通过本地 Firefox 浏览器启动了服务器端 RStudio。现在,当我尝试从家里(通过我自己的路由器)访问服务器 RStudio 时,它不起作用。我需要帮助进行故障排除,我猜这是路由器的问题。我正在运行 Mac OSX 10.6.8。不知道大学服务器在运行什么,但我认为这不是服务器端问题。

这是我第一次在我表弟家中的工作方式:首先,我通过 VPN 连接到大学网络;然后我用端口转发调用SSH;然后我打开一个 Firefox 浏览器,连接到我的 localhost 端口,它会在服务器端打开 RStudio,我可以通过本地浏览器窗口访问它。

这是我现在尝试从家庭网络登录时遇到的问题:

我可以成功建立VPN连接。我还可以使用以下命令成功设置 SSH: ssh -v -L 8783:localhost:8783 myacct@server.com

以下是成功 ssh 命令的详细输出的最后几行:

debug1: Authentication succeeded (password).
debug1: Local connections to LOCALHOST:8783 forwarded to remote address localhost:8783
debug1: Local forwarding listening on 127.0.0.1 port 8783.
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on ::1 port 8783.
debug1: channel 1: new [port listener]
debug1: channel 2: new [client-session]
debug1: Entering interactive session.
Last login: Mon Sep  2 04:02:40 2013 from vpnipaddress

所以我认为我仍然在 VPN 和 SSH 阶段取得了成功(尽管我不知道为什么它说我上次登录是 9 月 2 日,而我从那以后已经登录了几次)。

接下来,我打开 Firefox,然后键入 localhost:8783,而不是通过浏览器窗口获取 RStudio 服务器应用程序,而是收到以下错误:

在 Firefox 浏览器窗口中,它显示:未找到服务器、Firefox 在 www.localhost.com 上找不到服务器、检查地址是否输入错误等。

在终端窗口中,它说:

debug1: Connection to port 8783 forwarding to localhost port 8783 requested.
debug1: channel 3: new [direct-tcpip]
channel 3: open failed: connect failed: Connection refused
debug1: channel 3: free: direct-tcpip: listening port 8783 for localhost port 8783, connect from 127.0.0.1 port 50420, nchannels 4

我不确定我做错了什么。自上次成功连接以来,我的笔记本电脑上没有任何更改。我在自己的路由器上(而不是我堂兄的),所以也许我需要弄乱防火墙?我已经允许端口 22 和 8783 通过防火墙进入我的笔记本电脑(我什至不确定我是否需要这样做)。帮助?

4

11 回答 11

131
ssh -v -L 8783:localhost:8783 myacct@server.com
...
channel 3: open failed: connect failed: Connection refused

当您连接到本地系统上的端口 8783 时,该连接会通过您的 ssh 链接通过隧道连接到server.com上的 ssh 服务器。从那里,ssh 服务器与 localhost 端口 8783 建立 TCP 连接,并在隧道连接和到隧道目标的连接之间中继数据。

“连接被拒绝”错误来自 server.com 上的 ssh 服务器,当它尝试与隧道目标建立 TCP 连接时。“连接被拒绝”意味着连接尝试被拒绝。拒绝的最简单解释是,在 server.com 上,没有任何东西在监听 localhost 端口 8783 上的连接。换句话说,您尝试通过隧道连接到的服务器软件没有运行,或者它正在运行但它是不在那个端口上监听。

于 2015-01-10T17:51:52.667 回答
7

发布此内容以帮助某人。

症状:

channel 2: open failed: connect failed: Connection refused
debug1: channel 2: free: direct-tcpip:
   listening port 8890 for 169.254.76.1 port 8890,
   connect from ::1 port 52337 to ::1 port 8890, nchannels 8

我的场景;我不得不使用远程服务器作为堡垒主机来连接其他地方。最终目的地/目标:169.254.76.1,端口 8890。通过具有公共 ip 的中间服务器:ec2-54-162-180-7.compute-1.amazonaws.com

SSH本地端口转发命令:

ssh -i ~/keys/dev.tst -vnNT -L :8890:169.254.76.1:8890
glue@ec2-54-162-180-7.compute-1.amazonaws.com

问题是什么:目标主机的 8890 端口上没有服务绑定。我忘记启动服务了。

我是如何解决问题的:

SSH 进入堡垒主机,然后进行 curl。

希望这可以帮助。

于 2017-08-21T22:09:42.977 回答
4

注意:localhost是使用本地(环回)网络接口的地址的主机名,并且127.0.0.1是其在IPv4 网络标准中的 IP (::1在 IPv6 中)。0.0.0.0是 IPv4 标准的“当前网络”IP 地址。

我在使用 Docker 设置时遇到了这个错误。我有一个在外部服务器上运行的 Docker 容器,并且我(正确地)将其端口映射为127.0.0.1:9232:9232. 通过 port-forwarding ssh remote -L 9232:127.0.0.1:9232,我希望能够与remote服务器的端口进行通信,9232就好像它是我自己的本地端口一样。

事实证明,Docker 容器在内部运行它的进程127.0.0.1:9232而不是0.0.0.0:9232,因此即使我正确指定了容器的端口映射,它们也没有在正确的接口上被映射出来。

于 2019-05-22T09:04:13.903 回答
2

就我而言,它在运行vncserverlinux 后工作。

  1. 在linux命令行上输入:sudo ssh -L 5901:localhost:5901 -i <ssh_private_key> <username>@<public-IP-address>
  2. 在那里输入vncserver
  3. 转到 VncViewer 应用程序并使用连接localhost:5901

在此处输入图像描述

于 2021-03-05T08:45:38.813 回答
1

我曾经遇到过类似的问题,因为重新启动网络服务时服务器上没有'localhost',例如'ifdown -a'但后面只有'ifup -eo1'。除了服务器没有监听端口外,您还可以检查“localhost”是否可用。

ps:发布它只是希望有类似问题的人可以受益。

于 2018-03-20T16:57:48.827 回答
1

当我想通过隧道建立 vnc 连接时,我遇到了这个问题。但是 vncserver 没有运行。我通过打开远程机器上的频道来解决它vncserver :3

于 2019-03-10T22:58:52.400 回答
0

当我试图通过 ssh 隧道我的mlflow ui以远程查看时,我遇到了同样的错误。如第一个答案中所述,出现错误是因为服务器上没有任何东西在侦听端口。对我来说,这是因为我忘记在远程机器上启动 mlflow 应用程序!所以一般来说 - 确保您尝试远程访问的应用程序正在运行。

于 2021-03-10T14:19:08.960 回答
0

在我的情况下,它在检查用户凭据的正确 IP 地址后工作,之前我使用了错误的服务器 IP

ssh -NfL 127.0.0.1:8084:127.0.0.1:8888 user@ip_address_of_server

改正后,工作正常。

于 2021-11-09T10:32:56.240 回答
0

遇到同样的错误。就我而言,我发现问题出在 jupyter 的配置文件中。

假设有 3 台计算机,分别名为 A、B 和 C,A 可以访问 B,但不能访问 C;B 可以访问 C。

要从A访问C的jupyter-notebook服务,首先我通过B建立了从A到C的ssh隧道,然后我通过输入localhost:port_number访问jupyter-notebook,然后我得到了错误。

最后,通过在 jupyter-notebook 的配置文件中写入“c.NotebookApp.ip = '0.0.0.0'”解决了问题,其中“0.0.0.0”允许访问其他 IP。

希望有类似情况的人可以受益。

于 2022-02-25T09:13:38.200 回答
-2

只需替换localhost127.0.0.1.

(答案基于此页面上其他人的答案。)

于 2020-09-15T18:32:02.517 回答
-3

这意味着远程虚拟机没有监听当前端口我通过在虚拟机服务器中添加端口解决了这个问题

于 2019-10-08T08:42:53.903 回答