|
|
1
21
当您运行ssh agent-s时,它会启动一个后台进程,稍后您需要终止该进程。所以,最起码要把你的黑客行为改成:
但是,我不明白这个黑客是如何工作的。只运行一个代理而不运行ssh-add将不会加载任何密钥。也许MacOS的ssh代理的行为与 manual page 说是的。 |
|
|
2
29
此外。。。 如果您的密钥具有密码短语,则keychain将询问您一次(有效期至您重新启动计算机或杀死ssh代理)。 钥匙链就是你需要的!只需安装它并在.bash_配置文件中添加以下代码:
因此,在脚本中使用下面的代码加载ssh代理环境变量:
注意:keychain还生成代码到csh和fish shell。 从复制了答案 https://serverfault.com/questions/92683/execute-rsync-command-over-ssh-with-an-ssh-agent-via-crontab |
|
|
3
7
我也有类似的问题。我的脚本(依赖于ssh密钥)在手动运行时工作,但在使用crontab运行时失败。 用手动定义适当的键
不起作用。 但最终我发现当crontab运行ssh时,ssh-auth-sock是空的。我不知道为什么,但我只是
复制返回值并将此定义添加到crontab的头部。
我对这里发生的事情不太了解,但它解决了我的问题。crontab现在运行顺利。 |
|
|
4
6
恢复运行ssh代理的pid和socket的一种方法是。
当然,这假定您在系统中安装了pgrep,并且只有一个ssh代理正在运行,或者在多个ssh代理的情况下,它将采用pgrep最后找到的一个。 |
|
|
5
5
我的解决方案(基于pra)略有改进,即使在脚本失败时也可以终止进程:
注意,我必须在我的机器上调用ssh-add(scientific linux 6)。 |
|
|
6
3
要在不使用自动密码/密码短语黑客的情况下设置自动进程, 我使用一个单独的没有密码的身份文件,并用from=“automated.machine.com”…限制目标计算机的授权密钥条目。等。 我在.ssh/config中设置了远程自动主机:
以及远程.machine.edu:.ssh/authorized_密钥:
那么ssh不需要ssh代理或keychain提供的外部认证授权。 |
|
|
7
3
受这里其他一些答案(尤其是vpk)的启发,我想出了以下crontab条目,不需要外部脚本:
|
|
|
8
2
假设您已经配置了ssh设置,并且该脚本在终端上运行良好,使用 钥匙链 这绝对是确保脚本在crontab中也能正常工作的最简单方法。 由于keychain不包括在大多数UNIX/Linux派生中,下面是逐步过程。 1。 根据您的操作系统版本,从 http://pkgs.repoforge.org/keychain/ .CentOS 6示例:
2。 安装程序包:
三。 为ssh密钥生成keychain文件,它们将位于~/.keychain目录中。ID_rsa示例:
4。 在使用ssh身份验证的第一个命令之前,在脚本的任何位置添加以下行:
我个人试图避免使用额外的程序,但我尝试的所有其他程序都不起作用。这一切都很好。 |
|
|
9
2
如果您不能使用keychain,并且不能从脚本启动ssh代理(例如,因为您的密钥受密码保护),那么这是一个可以工作的解决方案。 运行一次:
在从cron运行的脚本中:
当然,这允许任何能够读取“~/.ssh代理文件”和相应套接字的人使用您的ssh凭据,因此在任何多用户环境中都要小心使用。 |