如何在 cron 作业中加载 ssh_config 文件

how do you load an ssh_config file within a cron job

ssh_config 文件允许您配置 ssh 客户端

您可以为不同的 ssh 主机指定别名、默认用户和身份文件等

文档指出 ssh_config 选项由 ssh 客户端按以下顺序神奇地加载:

  1. 命令行选项
  2. 用户特定文件 (~/.ssh/config)
  3. 系统级文件(/etc/ssh/ssh_config)

但是,这些配置选项不会自动 available/respected 在 cron 作业上下文中

如何为 crontab 上下文或特定的 cronjob 加载 ssh 配置文件,例如 ~/.ssh/config?

更新: 问题是这样的:https://superuser.com/questions/508408/public-key-always-asking-for-password-and-keyphrase

ssh --help 表示有一个 -F configfile 选项。但是,我认为 ssh 仍然应该检查 ~/.ssh/config 和 /etc/ssh/ssh_config,即使 运行 通过 cron.

当 运行 来自 cron 时,HOME 环境变量设置为指向您的普通主目录,因此 ssh 具有定位所需的所有信息标准配置文件。

我通过放置以下 cron 作业来测试它:

* * * * * strace -o /tmp/trace -f -s 80 ssh localhost uptime > /tmp/trace

并在作业 运行 后检查 /tmp/trace,我看到:

29079 open("/home/lars/.ssh/config", O_RDONLY) = 3
29079 open("/etc/ssh/ssh_config", O_RDONLY) = 3

更新

在我的 OS X 机器 (OS X 10.10.3) 上,我设置了以下 ~/.ssh/config 文件:

Host Whosebug
  Hostname fileserver.house
  IdentityFile fileserver_rsa

我创建了以下 cron 条目:

* * * * * ssh Whosebug uptime > $HOME/output

唯一可行的方法是如果 ssh 正在读取我的 ~/.ssh/config 文件...并且它工作得很好。是什么让您相信事情没有奏效?