SSH -L连接成功,但localhost端口转发不起作用"通道3:打开失败:连接失败:连接被拒绝"

use*_*495 37 macos ssh firefox router portforwarding

我的实验室在服务器上运行RStudio.几个星期前,从我堂兄的家里,我成功地进入服务器并通过我当地的Firefox浏览器拉出服务器端的RStudio.现在当我尝试从家里(通过我自己的路由器)访问服务器RStudio时,它不起作用.我需要帮助排除故障,我猜它是路由器上的一些问题.我正在运行Mac OSX 10.6.8.不知道大学服务器在运行什么,但我认为这不是服务器端问题.

这是我第一次这样做时的表现,在我堂兄的家里:首先,我进入大学网络; 然后我用端口转发呼叫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
Run Code Online (Sandbox Code Playgroud)

所以我认为我仍然在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
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*ter 72

ssh -v -L 8783:localhost:8783 myacct@server.com
...
channel 3: open failed: connect failed: Connection refused
Run Code Online (Sandbox Code Playgroud)

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

"连接被拒绝"错误来自server.com上的ssh服务器,当它尝试建立到隧道目标的TCP连接时."连接被拒绝"表示连接尝试被拒绝.对拒绝的最简单的解释是,在server.com上,没有任何内容监听localhost端口8783上的连接.换句话说,您尝试隧道连接的服务器软件没有运行,或者它正在运行但它是不听那个港口.

  • 您的评论未就如何解决问题提出任何建议. (13认同)
  • 那么我该如何解决问题呢?我有一个数字海洋的液滴.如何让它"倾听"我的连接? (6认同)
  • 是的,它确实。Kenster 说您很可能没有在该端口上运行任何东西。又名“我们试图侦听您指定的端口,但该端口上没有任何内容”。就像我为本地服务器的端口指定了端口转发,但该本地服务器还没有启动,它会抛出错误。但是启动服务器和 BOOM!错误消失了。对于 Digital Ocean,请确保您的 ssh 服务器实际上正在侦听转发到本地计算机的端口。 (5认同)
  • 而不是`localhost`,尝试使用IP地址,例如`ssh -v -L 8783:127.0.0.1:8783 myacct @ server.com`或`ssh -v -L 8783:192.168.1.10:8783 myacct @ server.com` .还要检查server.com上运行的服务是否正在侦听正确的IP地址和端口 (4认同)
  • 您是否尝试过像这样添加前导“:”:ssh -v -L :8783:localhost:8783 myacct@server.com (3认同)
  • Kenster 是完全正确的 - RStudio Server 不监听 8783,它监听 8787,至少在我的服务器上。所以我试图连接到一个没有做任何事情的端口。 (3认同)

Ara*_*ndR 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
Run Code Online (Sandbox Code Playgroud)

我的场景;我不得不使用远程服务器作为堡垒主机来连接其他地方。最终目的地/目标: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
Run Code Online (Sandbox Code Playgroud)

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

我是如何解决问题的:

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

希望这可以帮助。