2016-07-28 77 views
0

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

+1

看看你的shell启动文件中的东西实际上是否产生一个shell(即递归)。 – Kusalananda

+0

我什么也没看到。我刚刚发现,在.x2GO目录中,有一堆到/ tmp的符号链接。那里的文件都是ssh套接字文件。 X2G0也使用ssh连接到服务器。但我通过命令行通过正常的ssh连接重复了这个问题。 –

+1

原来你是对的。我删除了我的.bashrc中的ssh-agent/bin/bash行,并解决了这个问题。我一直在使用这台服务器几个月没有问题,并且自从安装后没有触及该文件,所以我不知道为什么它是一个问题。但是这固定了它。谢谢! –

回答

1

一个shell初始化文件可能是生成一个壳,其中,读取shell初始化文件时,将产生一个外壳等

你提到ssh-agent /bin/bash。在.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