如何删除SSH转发的端口


52

我曾经ssh -L 10002:192.168.0.30:10002 192.168.1.135建立端口转发,但现在需要删除它。

我该怎么做呢?


当我们再次启动一个新的ssh会话并运行相同的命令并获取Warning: remote port forwarding failed for listen port消息时,我们常常意识到端口仍在转发。
GabLeRoux '16

Answers:


56

如果您使用的是Linux,则可以通过以下方法终止该过程:

ps aux | grep ssh

然后使用

kill <id>

杀死进程。

如果kill命令没有成功,您可以尝试

kill -9 <id>

31
,不,,请,请kill -9等到您尝试使用后再使用kill。许多进程将具有信号处理程序,这些信号处理程序将清理它们对资源的使用,清理关闭连接和其他预关闭任务。如果使用-9杀死,则该进程将立即终止而不进行清理。杀不-9 工作的大部分时间。
道格·哈里斯

17
kill -9没有理由就像使用is弹枪杀死蚊子一样。:)
达伦·霍尔

2
我通常做一个班轮pgrep ssh | xargs kill。不要用-9白白确实
GabLeRoux

2
@GabLeRoux假定您只有一个ssh命令,或者ssh正在运行的所有命令都可以杀死。这并不是一个很好的一般假设。
Tripleee '16

2
@Avamander我一直连接到多个ssh远程服务器上的多个实例,其中一些实例没有我的直接积极参与。例如,ssh当我访问远程缓冲区时,Emacs Tramp模式会在后台打开连接。有些人使用用户空间文件系统执行类似的操作。这一点并不罕见。实际上,我假设单个用户,单个ssh实例是少数情况的用例。如果它对您有用,对您有好处,但这不是很好的一般建议。
三人

19

使用ssh多路复用时,通常不希望终止ssh进程(它会终止与该主机的所有打开的连接),并且由于“转义不适用于多路复用会话”,因此您不能轻易访问转义。正确的方法是运行要取消的转发命令的类似物,但要添加-O cancel。例如:

ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135

这将禁用此端口转发而不会终止会话。同样,这仅在将ssh复用用于与192.168.1.135的连接时才有效


我很高兴这个存在,我找到了,非常感谢!
加尔瓦

2
这是最好的解决方案。杀死高手只是跑ssh -O exit 192.168.1.135
东方

如果您不是多路复用会话,请参阅exhuma的出色答案!(感谢a3nm捕捉我的错字。)
艾伦·德·

太棒了!这应该是选择的答案!
Truong Nguyen '18

13

如何在已经运行的SSH会话中取消转发的端口:

  1. ~+ C(波浪号+大写字母C)
  2. 类型 -KL port
  3. 按Enter

您应该看到以下内容:

ssh> -KL 10002
Canceled forwarding.

12

您可以使用“ escape-key”(通常〜),然后使用C来获取连接的cli。您可以从那里删除隧道而无需断开连接。


1
我想知道这个细节。我知道您可以在使用SSH后添加隧道,但尚未找到如何拆除隧道的方法。
carestad 2014年

9
在CLI模式下,您可以提供帮助。-KL是-L的对面,-KL是-L的对面,-KD是-D的对面。进行“转义键”(〜)后跟#将显示您的隧道。
Jimmy Hedman 2014年

1
@JimmyHedman,除了添加评论外,您可能还希望编辑答案。它使所有内容更具可读性。有时,注释被隐藏(以防万一)。
exhuma '16

7

您可以通过键入~C(大写的“ C”)进入交互式控制台。这使您可以动态添加和删除端口转发(以及其他一些功能)。

此顺序必须回车/换行符之后立即进行。因此有疑问,只需键入Enter~C(按顺序)。

如果您没有看到字符出现在控制台上,则说明操作正确:)

现在,您应该会看到一个ssh>提示。

要删除该端口,只需输入-KL 10002后跟Enter10002您转发的端口在哪里)。

反向操作-添加新的前向操作-可以这样完成(从头到尾):

Enter~C

ssh> -L 10002:192.168.0.30:10002

Enter


如果您多路复用连接,这是正确的答案。如果是的话,您将被弹跳~C escape not available to multiplexed sessions。如果是这样,请参阅a3nm的出色答案。
艾伦·德·斯梅特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.