我的实验室在服务器上运行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
所以我认为我仍然在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通过防火墙进入我的笔记本电脑(我甚至不确定我是否需要这样做)。帮助
答案 0 :(得分:62)
ssh -v -L 8783:localhost:8783 myacct@server.com
...
channel 3: open failed: connect failed: Connection refused
当您连接到本地系统上的端口8783时,该连接将通过您的ssh链接通过 server.com 连接到ssh服务器。从那里,ssh服务器建立TCP连接到localhost端口8783,并在隧道连接和隧道目标连接之间中继数据。
“连接被拒绝”错误来自server.com上的ssh服务器,当它尝试建立到隧道目标的TCP连接时。 “连接被拒绝”表示连接尝试被拒绝。对拒绝的最简单的解释是,在server.com上,没有任何内容监听localhost端口8783上的连接。换句话说,您尝试隧道连接的服务器软件没有运行,或者它正在运行但它是不听那个港口。
答案 1 :(得分:1)
发布此信息以帮助某人。
症状:
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进入堡垒主机,然后进行卷曲。
希望这有帮助。
答案 2 :(得分:0)
我曾经遇到类似的问题因为' localhost'服务器在重新启动网络服务时不可用,例如' ifdown -a'但仅后面跟着#if; -eo1'。除了服务器没有收听端口,你还可以检查“localhost”#39;可用与否。
ps:发布它只是希望有类似问题的人可能会受益。
答案 3 :(得分:0)
当我想通过隧道建立vnc连接时遇到了这个问题。
但是vncserver没有运行。
我通过使用vncserver :3
打开远程计算机上的通道来解决它。
答案 4 :(得分:0)
也许为时已晚,但是我遇到了同样的问题,并且不想逐端口映射,因此我更改了/etc/ssh/sshd_config
文件并添加了:
AllowTCPForwarding yes
PermitOpen any
然后重新启动ssh
答案 5 :(得分:0)
注意:localhost
是使用本地(环回)网络接口的地址的主机名,而127.0.0.1
是其在IPv4 network standard中的IP(即{{1} })。 ::1
是IPv4标准的“当前网络” IP地址。
我在Docker设置中遇到此错误。我有一个在外部服务器上运行的Docker容器,我(正确)将其端口映射为0.0.0.0
。通过端口转发127.0.0.1:9232:9232
,我希望能够与ssh remote -L 9232:127.0.0.1:9232
服务器的端口remote
通信,就好像它是我自己的本地端口一样。
事实证明,Docker容器在9232
而不是127.0.0.1:9232
上内部运行其进程,因此即使我正确指定了容器的端口映射,它们也没有在端口上正确的接口以进行映射。
答案 6 :(得分:0)
这意味着远程虚拟机不在监听当前端口,我通过在虚拟机服务器中添加端口来解决此问题
答案 7 :(得分:0)
只需将localhost
替换为127.0.0.1
。
(答案基于此页面上其他人的答案。)
答案 8 :(得分:0)
就我而言,它在 linux 上运行 translate{
field => "[log.file.path]"
destination => "[operator_name]"
dictionary => {
if contains "[E-1].[P-28]" => "OPERATOR-1"
if contains "[E-1].[P-45]" => "OPERATOR-2"
if contains "[E-1].[P-51]" => "OPERATOR-3"
后工作。
vncserver
sudo ssh -L 5901:localhost:5901 -i <ssh_private_key> <username>@<public-IP-address>
vncserver
答案 9 :(得分:0)
当我尝试通过 ssh 隧道连接我的 mlflow ui 以远程查看时,我遇到了同样的错误。正如第一个答案中提到的,出现错误是因为服务器上没有任何东西在侦听端口。对我来说,这是因为我忘记在我的远程机器上启动 mlflow 应用!因此,一般而言 - 确保您尝试远程访问的应用正在运行。