2012-08-05 127 views
29

我使用SSH访问我的大学的afs系统。我喜欢使用rmate(远程TextMate),它需要SSH隧道,所以我将这个别名包含在我的.bashrc中。警告:侦听端口的远程端口转发失败52698

alias sshr=ssh -R 52698:localhost:52698 [email protected] 

它一直工作到现在。

+0

只是一个提示。在任何ssh问题中,使用'-vvv'开关进行调试。如果可以,请尝试在远程服务器上使用localhost作为目标来验证配置。 'ssh [email protected] - ssh -vvv -R 1234:localhost:1234 localhost'。 Regards, – geckos 2017-06-12 16:59:27

回答

18

我打开了另一个SSH连接。我只需要在打开SSH隧道之前关闭该连接。

进一步说明: 一旦一个ssh连接已经建立,后续连接将产生一个消息:

警告:远程端口转发失败监听端口52698

此消息是无害,因为前锋只能设置一次,一次前锋将适用于同一台机器的所有ssh连接。打开转发的原始ssh会话将在退出shell时保持打开状态,直到完成所有远程编辑会话。

+1

你从哪里找到你的信息来解决这个问题? 我刚刚在服务器上启动,并且使用反向通道进行了SSHed,试图运行rmate,并且它返回错误 connect_to localhost port 52698:failed。 据我所知,我只有一个SSH连接打开。我更新了iptables以允许在此端口上进行连接。坚持下一步尝试。 – Ila 2012-12-13 02:35:00

+2

Noob提示我发现有用:请记住让Textmate在本地机器上运行。这实际上启动服务器。 – Magne 2014-10-08 08:19:22

+4

如果您仍然收到该警告,可以通过执行以下操作注销并连接到另一个端口:ssh -R :localhost:52698 @。 – kwyoung11 2015-01-14 21:34:15

35

我有同样的问题。为了找到已打开的端口,你必须将“corn.myschool.edu”计算机上发出以下命令:

sudo netstat -plant | grep 52698 

然后杀死所有想出这个过程中(更换XXXX与进程ID)

sudo kill -9 xxxx 

(更新:改变的选项是-plant,因为它是一个很好的助记符)

+8

在mac上,该命令似乎是“lsof -i -P | grep 52698”,但仍然不能解决问题(仅列出Textmate) – Kevin 2013-08-22 06:17:14

+3

我想如果将参数重新排列为netstat:'sudo netstat -plant | grep 52698' ...而我写这个时,我甚至没有注意到你的电脑叫'玉米'! :P – icedwater 2015-04-15 04:19:27

0

在我的情况下,问题是,远程系统没有DNS设置正确它甚至无法解析自己的主机名。确保你在远程系统的/etc/resolv.conf中有一个可用的DNS。

2

我遇到过这个问题,但是当它连接到我没有sudo priviliges的服务器时,所以最高响应暗示运行sudo netstat ...对我来说是不可行的。

我最终发现是因为仍然有运行rmate的实例,所以我用ps来列出正在运行的进程,然后用kill -9 pid(其中pid是rmate的进程ID)。