如何关闭所有 ssh-add 密钥?

如何关闭所有 ssh-add 密钥?

每次我通过 ssh 进入服务器时,都需要一遍又一遍地添加相同的 ssh 密钥。所以我有一个脚本可以为我做到这一点,并且在一段时间内运行良好。然而现在服务器抱怨:

- You have too many files are open.  Close some files or increase your per-process descriptor limit.
while executing
"spawn bash -c "ssh-add [...some key]""

完整脚本:

#!/usr/bin/expect -f                                                            

set key [lindex $argv 0]                                                        
set pass [lindex $argv 1]   

spawn bash -c "ssh-add /path/to/.ssh/$key"                               
expect "passphrase"                                                             
send "$pass\n"                                                                  
interact 

我对做什么还不够了解spawn,也不ssh-add知道该做什么。当我运行时ps -e,只有 bash 进程。也许这是因为它是共享主机服务器?我想我没有spawn正确使用。我应该如何解决这个问题并避免以后再出现这个问题?

答案1

首先检查您的打开文件限制:

$ ulimit -n
65536

如果该值太小,只需增加限制即可解决问题。如果限制类似于65536,那么您的脚本可能正在做一些可疑的事情。

然后检查当前打开了哪些文件:

lsof -u your_username

然后您可以计算一下脚本需要打开多少个文件才能达到限制:

lsof -u your_username | wc -l

顺便提一句。而不是手动添加 ssh 密钥不是更容易使用吗ForwardAgent

相关内容