如何注销开放的远程SSH会话?


48

我从公共Windows机器(在我们的实验室中)塞进Linux机器(bash shell)中,却忘记了注销。我现在回到另一个房间的座位上,我懒得回去退出会议。不过,我可以从当前的PC进入Linux机器。我可以从新的SSH会话中强制注销另一个会话吗?

当我从当前PC切换到Linux框并键入users命令时,我可以看到我仍然登录在那里。我的名字被列出两次-一个代表当前会话,另一个代表来自实验室PC的会话。

我在所说的机器上没有root特权,但是我想那应该没关系,因为我只是想注销自己。

Answers:


73

tty在当前会话上运行,以查找正在使用哪个tty,因此您不必退出当前会话。运行w 以向您显示当前用户和关联的伪终端(tty)。假设您已登录两次,并且ssh服务器上没有其他用户,则您先前的ssh会话将打开pts/0且当前打开pts/1。放弃会话pts/0只是简单地杀死与之关联的进程

pkill -9 -t pts/0 

由于某种原因,pkill -9 pts/tty-number它对我不起作用;然后我发现该进程的pid使用ps aux | grep amar并尝试过pkill -9 -P pid,并且有效。谢谢!
Amarghosh

7
pkill -9 -t pts/tty-number-t是要指定的开关tty
Casual Coder

糟糕,-t当我初读它时,不知何故我在您的答案中错过了它。
Amarghosh

+1,很棒的修复。我只是在将SSH SSH到同一网络上的计算机时重置路由器,然后才意识到它使该会话登录。
2013年

6
今天发现了这个问题(效果很好,谢谢!),但-9听起来有些刺耳。一个简单的就-HUP足够了。
Matijs 2014年

4

假设您没有任何其他不想被86化的进程,则可以执行以下操作:

$ ssh <systemname> pkill -u <yourlogin>

其他会话将消失。


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.