ssh 连接产生了数百个 ssh-agent /bin/bash 个实例
ssh connections are spawning hundreds of ssh-agent /bin/bash instances
我在 VMWare VM 上有一个 Arch 服务器 运行。我通过将 ssh 连接从端口 X 转发到服务器上的端口 22 的防火墙连接到它。昨天,我开始收到错误 "Bash: Fork: Resource Temporarily Unavailable"。我可以以 root 身份登录并毫无问题地管理事物,但似乎当我以我通常使用的用户身份 ssh 登录时,ssh 会话现在产生了数百个 ssh-agent /bin/bash 会话。反过来,这会耗尽系统上的所有线程和文件描述符(据我所知)并使其无法使用。到目前为止我能找到的一点点信息告诉我,我必须有某种循环,但这直到昨天才发生,可能是在我 运行 更新时。在这一点上,我愿意接受建议。
您的一个 shell 初始化文件可能正在生成一个 shell,当读取 shell 初始化文件时,它会生成一个 shell,等等
您提到了 ssh-agent /bin/bash
。将 this 放在 .bashrc
中肯定会导致问题,因为这会指示 ssh-agent
生成 bash
...
相反,使用类似
的东西
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval $(ssh-agent)
fi
in .bashrc
(或 .xinitrc
或 .xsession
对于具有图形登录的系统)。
或者可能(未经测试):
if [[ -z "$SSH_AUTH_SOCK" ]]; then
ssh-agent /bin/bash
fi
在 .bash_profile
.
在我的例子 (windows) 中,这是因为我在完成 shell 后没有退出,所以它们没有被处理掉。
完成后使用 ctrl+d
或键入 exit
终止 ssh 代理
我在 VMWare VM 上有一个 Arch 服务器 运行。我通过将 ssh 连接从端口 X 转发到服务器上的端口 22 的防火墙连接到它。昨天,我开始收到错误 "Bash: Fork: Resource Temporarily Unavailable"。我可以以 root 身份登录并毫无问题地管理事物,但似乎当我以我通常使用的用户身份 ssh 登录时,ssh 会话现在产生了数百个 ssh-agent /bin/bash 会话。反过来,这会耗尽系统上的所有线程和文件描述符(据我所知)并使其无法使用。到目前为止我能找到的一点点信息告诉我,我必须有某种循环,但这直到昨天才发生,可能是在我 运行 更新时。在这一点上,我愿意接受建议。
您的一个 shell 初始化文件可能正在生成一个 shell,当读取 shell 初始化文件时,它会生成一个 shell,等等
您提到了 ssh-agent /bin/bash
。将 this 放在 .bashrc
中肯定会导致问题,因为这会指示 ssh-agent
生成 bash
...
相反,使用类似
的东西if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval $(ssh-agent)
fi
in .bashrc
(或 .xinitrc
或 .xsession
对于具有图形登录的系统)。
或者可能(未经测试):
if [[ -z "$SSH_AUTH_SOCK" ]]; then
ssh-agent /bin/bash
fi
在 .bash_profile
.
在我的例子 (windows) 中,这是因为我在完成 shell 后没有退出,所以它们没有被处理掉。
完成后使用 ctrl+d
或键入 exit
终止 ssh 代理