0

我有一个新贵配置来启动我的守护进程(每次都与其他服务器建立 ssh 连接)。为了建立 ssh 连接,它使用存储在 ssh-agent 中的密钥。因此,在启动脚本中,我正在创建一个 ssh-agent 实例,但是在停止时我无法停止它。

script

    eval $(ssh-agent -s) > /dev/null
    # command to start deamon

end script


pre-stop script

       if [ -n "$SSH_AGENT_PID" ]; then
           echo "killing ssh-agent..."
           eval `ssh-agent -k`
       fi

end script

在 pre-stop 部分,SSH_AGENT_PID 是空的,所以我无法杀死。这里可能是什么问题..

还有一个问题:我有很多生成的 ssh-agent 进程,我无法使用 ssh-agent -k 杀死它们,因为它是由其他一些 shell 生成的。有没有办法可以杀死这些进程(无需使用 kill 命令强行杀死它)。

4

1 回答 1

1

看看这份工作:

https://bitbucket.org/CameronNemo/upstart-jobs/src/1c55797aa411718e762423fddb92c90f198c027d/sessions/ssh-agent.conf?at=master

基本上,您的问题是脚本和 pre-stop 脚本部分是单独的外壳,因此它们没有共享环境。

此外, ssh-agent -k 基本上只是在幕后使用 kill 命令。kill 命令不是强制的(只有 kill -KILL 或 kill -9 是)。

于 2014-09-20T03:29:01.527 回答