【问题标题】:ssh connections are spawning hundreds of ssh-agent /bin/bash instancesssh 连接正在产生数百个 ssh-agent /bin/bash 实例
【发布时间】:2016-07-28 18:17:51
【问题描述】:

我有一个在 VMWare 虚拟机上运行的 Arch 服务器。我通过防火墙连接到它,该防火墙将 ssh 连接从端口 X 转发到服务器上的端口 22。昨天,我开始收到错误“Bash: Fork: Resource Temporarily Unavailable”。我可以以 root 身份登录并毫无问题地进行管理,但似乎当我以我通常使用的用户身份登录时,ssh 会话现在产生了数百个 ssh-agent /bin/bash 会话。反过来,这会耗尽系统上的所有线程和文件描述符(据我所知)并使其无法使用。到目前为止,我能够找到的一点信息告诉我,我必须有某种循环,但这直到昨天才发生,可能是在我运行更新时。在这一点上,我愿意接受建议。

【问题讨论】:

  • 查看你的 shell 启动文件中的某些东西是否真的在生成一个 shell(即递归)。
  • 我什么也没看到。我刚刚发现在.x2GO 目录中,有一堆指向/tmp 的符号链接。里面的文件都是ssh socket文件。 X2G0 也使用 ssh 连接到服务器。但是我已经通过命令行复制了常规 ssh 连接的问题。
  • 事实证明你是对的。我在 .bashrc 中删除了 ssh-agent /bin/bash 的行并解决了问题。我已经使用这台服务器几个月没有问题,并且自安装以来没有接触过该文件,所以我不确定为什么会出现问题。但这解决了它。谢谢!
  • 我把它变成答案然后......

标签: linux ssh archlinux


【解决方案1】:

您的其中一个 shell 初始化文件可能正在生成一个 shell,当读取 shell 初始化文件时会生成一个 shell,等等。

你提到了ssh-agent /bin/bash。将 this 放入 .bashrc 肯定会导致问题,因为这会指示 ssh-agent 生成 bash...

相反,使用类似的东西

if [[ -z "$SSH_AUTH_SOCK" ]]; then
  eval $(ssh-agent)
fi

.bashrc 中(或.xinitrc .xsession 用于图形登录系统)。

或者可能(未经测试):

if [[ -z "$SSH_AUTH_SOCK" ]]; then
  ssh-agent /bin/bash
fi

.bash_profile.

【讨论】:

    【解决方案2】:

    在我的情况下(Windows),这是因为我在使用 shell 时没有退出,所以它们没有被处理掉。

    完成后使用ctrl+d 或输入exit 来终止ssh 代理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2016-04-15
      • 1970-01-01
      • 2023-01-13
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多