取消 ssh 端口转发

Pau*_*aul 5 ssh port-forwarding ubuntu

要访问受限制的大学网页,我经常运行以下命令:

ssh -fND port username@uni.address.here

然后我打开一个 firefox 配置文件,我已将其设置为使用 socks 代理通过端口 5555。我已经使用 cygwin ssh 这样做了一段时间,它工作正常。现在我在 ubuntu 上运行它,它也可以工作,但是当我关闭终端时它似乎并没有结束。我目前没有打开终端,但我仍然可以使用 5555 端口上的袜子代理浏览网页,并访问所有我不应该访问的受限页面。如果我更改端口号或 firefox 配置文件,那么我将无法访问这些文件,因此我得出的唯一结论是连接仍然打开,这导致了我的问题:如何取消此操作?

Rob*_*een 4

ssh 进程必须仍在运行。如果您确定这是以您的用户身份运行的唯一 ssh 进程,您可以执行以下操作

killall ssh
Run Code Online (Sandbox Code Playgroud)

作为您的用户。然而,找到正确的进程 PID 并杀死该特定进程会更安全 - 这可以避免杀死任何其他正在运行的 ssh 进程。您可以使用图形工具来完成此操作,或者:

ps -Afl|grep ssh
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个进程列表 - 每行用户名后面的第一个数字是 PID。然后杀死它:

kill PID
Run Code Online (Sandbox Code Playgroud)

其中 PID 是您在上面找到的 PID。

提问者编辑:

每当我这样做时,我不会手动终止进程,而是制作了一个其他人可能会觉得有用的 shell 文件:

ssh -fND port user@uni.address.here && firefox -P SSH && kill `ps -ef|grep "ssh -fND"|grep -v "grep"|cut -c10-15`
Run Code Online (Sandbox Code Playgroud)

firefox 命令使用我必须创建的 SSH 配置文件打开 firefox(它只有必要的代理设置)。进程上的第二个 grep 只是为了避免杀死 grep 进程本身(尽管现在想想这似乎没有必要:grep 将在它被杀死时完成)。