Answers:
如果您使用的是Linux,则可以通过以下方法终止该过程:
ps aux | grep ssh
然后使用
kill <id>
杀死进程。
如果kill命令没有成功,您可以尝试
kill -9 <id>
kill -9
等到您尝试使用后再使用kill
。许多进程将具有信号处理程序,这些信号处理程序将清理它们对资源的使用,清理关闭连接和其他预关闭任务。如果使用-9杀死,则该进程将立即终止而不进行清理。杀不-9 将工作的大部分时间。
kill -9
没有理由就像使用is弹枪杀死蚊子一样。:)
pgrep ssh | xargs kill
。不要用-9
白白确实
ssh
命令,或者ssh
正在运行的所有命令都可以杀死。这并不是一个很好的一般假设。
ssh
远程服务器上的多个实例,其中一些实例没有我的直接积极参与。例如,ssh
当我访问远程缓冲区时,Emacs Tramp模式会在后台打开连接。有些人使用用户空间文件系统执行类似的操作。这一点并不罕见。实际上,我假设单个用户,单个ssh
实例是少数情况的用例。如果它对您有用,对您有好处,但这不是很好的一般建议。
使用ssh多路复用时,通常不希望终止ssh进程(它会终止与该主机的所有打开的连接),并且由于“转义不适用于多路复用会话”,因此您不能轻易访问转义。正确的方法是运行要取消的转发命令的类似物,但要添加-O cancel
。例如:
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
这将禁用此端口转发而不会终止会话。同样,这仅在将ssh复用用于与192.168.1.135的连接时才有效。
ssh -O exit 192.168.1.135
。
您可以使用“ escape-key”(通常〜),然后使用C来获取连接的cli。您可以从那里删除隧道而无需断开连接。
您可以通过键入~C(大写的“ C”)进入交互式控制台。这使您可以动态添加和删除端口转发(以及其他一些功能)。
此顺序必须在回车/换行符之后立即进行。因此有疑问,只需键入Enter~C(按顺序)。
如果您没有看到字符出现在控制台上,则说明操作正确:)
现在,您应该会看到一个ssh>
提示。
要删除该端口,只需输入-KL 10002
后跟Enter(10002
您转发的端口在哪里)。
反向操作-添加新的前向操作-可以这样完成(从头到尾):
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
。如果是这样,请参阅a3nm的出色答案。
Warning: remote port forwarding failed for listen port
消息时,我们常常意识到端口仍在转发。