停止反向 ssh 隧道端口监听远程机器

停止反向 ssh 隧道端口监听远程机器

我有几个设备可能需要通过服务器进行维修。

由于设备通过 GPRS 网络连接,入站连接被阻止,因此我让它们每隔几分钟检查一次服务器。如果支持团队需要反向 ssh 隧道,服务器将做出响应,并为他们提供服务器中的可用端口。

一旦此端口被处理到客户端设备,设备将使用以下命令在受限用户帐户(由于文件command="/sbin/nologin"上的指令,没有可用的 shell authorized_keys)上打开反向 ssh 隧道:

ssh -fN -R $AVAILABLE_PORT:localhost:22 srvUsername@srvHost -i Indentity

在服务器上,我可以看到可用端口已被使用,netstat -tulpn输出如下:

tcp        0      0 127.0.0.1:PORT              0.0.0.0:*                   LISTEN      -                   
tcp        0      0 ::1:PORT                    :::*                        LISTEN      -

并且该端口将保持监听状态,除非我终止打开它的客户端计算机上的 ssh 进程。

但有时(主要是在网络问题期间)即使我终止进程或关闭客户端机器,该端口仍将继续在服务器上监听。

有没有办法从服务器端关闭该套接字而无需重新启动 ssh 服务?

GPRS 连接有点不稳定,所以我可能会遇到用尽所有可用端口并不得不等到它们过期的情况。此外,我还希望客户端在不再需要连接时成功终止 ssh 进程。我想在服务器端执行此操作。

答案1

以 sudo 身份运行:

sudo netstat -tulpna | grep PORTNUM

最后一栏将显示 PID/sshd

sudo kill -9 PID

完毕。

相关内容