关于我
 

xjpvictor's Blog
小老鼠,上灯台,两只耳朵竖起来

ssh单用户多客户端同时登录退出问题


各种折腾·archlinuxlinodelinuxvps

本文最后编辑于超过2159天以前,部分内容可能已经失效

最近 vps 上的日志被这一个错误给填满了 systemd[10299]: Failed to connect to API bus: Connection refused

错误是最近发生的,这期间因为升级过系统,所以怀疑过是系统问题,然而同样系统的另一个 vps 没有这个错误。Google 搜索也找不到相关信息,只有关于 DBus 的 bug,而且多数已经修复。

仔细研究日志后分析发现,这个错误总是和 ssh 记录的某一特定用户登录日志一起出现,而且出现频率不确定,但当同一时间有多个登录记录时,出现错误几率比较大。

继续分析发现,这个特定的 ssh 用户是用来在多个 vps 之间同步文件的。具体就是这个用户没有登录普通 shell 权限,只能登录后执行一些特定命令后就退出。这个出现错误的 vps 是我的「主」vps,有三个「从」vps 会每分钟以这个特定 ssh 用户的身份登录,执行命令,获取文件,然后退出。

问题是当用户第一次登录的时候,systemd 会新建一个 session,理论上这个 session 会被复用,之后这个用户从另一个客户端登录的时候,会使用同一个 session,只有当这个用户全部退出时,才会删除这个 session。

然而当用户同一时间登录多次,并同一时间退出,再同一时间登录的时候,就会有很大几率造成 session 的错误。具体表现就是 systemd 认为该用户全部退出了,于是删除 session,然而在 session 即将被删却没被删的时候,该用户再次登录,这次登录时因为 session 仍然存在,所以 systemd 试图复用该 session,但是这时 session 却被删除了,于是就出现了连接被拒绝的错误了。

找到了原因就好解决了。让该用户的 session 一直保留就好,sudo loginctl enable-linger USER

观察两天,错误信息没有了,同时原本疑虑的资源占用问题也没有发生。

本文 "ssh单用户多客户端同时登录退出问题" 由 K. Huang 首先发表于 xjpvictor's Blog 并以 CC BY-NC 4.0 许可证发布 © 2018
转载注明引用来源 https://blog.xjpvictor.info/2018/04/issue-with-single-ssh-user-concurrent-login-logout/


推广:使用 DigitalOcean 搭建属于你自己的博客,每月低至 5 美元,全球多数据中心,稳定高速

打赏我

评论

你的邮箱地址不会被公开。必填项以 * 标出

无意义或不相关评论将被删除

允许使用以下html标签:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

你可以上传文件,粘贴代码或长文至 Drop.it.r

本博客是言论不自由博客,评论只接受询问及赞同,不同观点请出门左转微博/发表于自己的博客。谢谢合作!

评论意味着你 同意 上传部分私人数据,包括邮箱和 IP, 这些数据不会被分享给第三方,不会用于商业用途或再推广用途。

更多相似文章