【发布时间】:2017-03-25 18:20:01
【问题描述】:
我的 Linux 环境中有一个示例 sh 脚本,它基本上运行的是当前 shell 的 ssh-agent,为其添加了一个密钥并运行两个 git 命令:
#!/bin/bash
eval "$(ssh-agent -s)"
ssh-add /home/duvdevan/.ssh/id_rsa
git -C /var/www/duvdevan/ reset --hard origin/master
git -C /var/www/duvdevan/ pull origin master
脚本实际上运行良好,但每次我运行它都会得到一个新进程,所以我认为它可能会成为性能问题,我可能最终会得到无用的进程。
输出示例:
Agent pid 12109
Identity added: /home/duvdevan/.ssh/custom_rsa (rsa w/o comment)
除此之外,是否有可能找到现有的ssh-agent 进程并将我的密钥添加到其中?
【问题讨论】:
-
试试
$SSH_AGENT_PID。 -
如果你想在产生一个进程后杀死它,你可以将它的 PID 存储到一个变量中并像这样调用它:
kill -9 $PID_SSH_AGENT -
我认为让脚本负责启动代理是错误的做法。只需假设代理 正在 运行,并要求任何用户确保他们已经拥有代理(通常由您的初始登录 shell 启动。)
-
您也可以简单地使用
ssh-agent my-script运行这样的脚本来启动一个代理,该代理会在my-script退出时立即退出。 -
我不能这样做,因为每天要多次登录机器——不仅是我,其他人也是如此。