似乎我在我配置的两个帐户的ssh代理的行为之间有点不一致。
我编写了一个简单的监视脚本来检查我们正在运行的某些VM的可用性。我用我的主访问帐户做了所有的测试和调试。在此过程中,我生成了一个SSH密钥区,启动了ssh代理,并将标识添加到代理中,以允许脚本不需要密码即可获得ssh。
现在,我想以服务帐户用户的身份运行这个脚本。我创建了服务帐户,并生成键,暂时将登录shell设置为/bin/bash。我生成了密钥,删除了密码,并将身份添加到代理中。
这种差异似乎与外壳与代理的连接方式有关。在我的用户帐户中,自从我开始测试(大约两周)以来,我还没有重新启动代理。但是,当我试图在服务帐户下运行脚本时,似乎每次都必须重新启动代理,添加标识,然后执行工作。
理想情况下,我希望代理无限期地运行,并且只要脚本运行,服务帐户就会自动重新连接到它,所以我不需要管理脚本中的进程。我看过每个帐户的配置,找不到任何不同之处。任何洞察力都将不胜感激。
**编辑:我忘记指出代理确实在持续运行,但是服务帐户的shell进程似乎没有在使用它,必须开始一个新的进程:
ovmmon 14043 0.0 0.0 53916 204 ? Ss May17 0:00 ssh-agent
ovmmon 14952 0.0 0.0 53916 204 ? Ss May17 0:00 ssh-agent发布于 2013-05-20 13:47:40
这里发生的两件事之一是:
您可以通过执行ps -ef和检查ssh代理来检查哪一种情况。
如果ssh特工死了,你需要一个办法让它活下来。以下是三种方法:
如果ssh代理没有死,但是您丢失了环境信息,那么请确保启动它时,要将它的环境变量写入特定的文件。然后,在登录时,让您的shell源文件。
发布于 2013-05-20 13:42:52
如果您使用的是子shell调用方法,ssh代理将在退出shell时死亡。如果使用eval方法,则shell将一直运行到手动终止为止。
请参阅:http://docstore.mik.ua/orelly/networking_2 2ndEd/ssh/ch06_03.htm
具体来说:http://docstore.mik.ua/orelly/networking_2 2ndEd/ssh/ch06_03.htm#ch06-50031.html
另外,我知道当从cron变量运行时会引起问题。因此,这是另一个需要检查的领域。
https://serverfault.com/questions/509250
复制相似问题