OS X cron 如何在没有环境的情况下使用现有的 ssh-agent?

OS X cron 如何在没有环境的情况下使用现有的 ssh-agent?

我浏览过所有这些论坛,但要么没有找到答案,要么更常见的是,问题是不同的。

客户端是 OS X El Capitan。我已登录,并且我的 ssh 密钥 (使用密码) 已正确存储在钥匙串中。手动操作一切正常:我可以通过 ssh 连接到我的服务器,我之前已将公钥存储在该服务器上,而无需输入密码。OS X 在登录时将其加载到 ssh-agent 中。

但是,我的 SSH 到服务器的脚本当然无法在我的帐户的 cron 中运行,因为环境没有 SSH_AUTH_SOCK 变量。系统要求我输入密码。

我可以让它像这样无人值守地工作:

my $sock = `ls /private/tmp/com.apple.launchd.*/Listeners`; chomp($sock);
system("SSH_AUTH_SOCK=$sock  /usr/bin/ssh myhost mycommand") && die "blah: $!";

但这似乎是一种粗暴的黑客行为。钥匙串很难访问,但可能真的很不错。我无法想象没有干净的方法来访问它。

相关内容