一、缘由:

  之前由于服务器只能密钥登陆,并限制root账户登陆,故用SSH打通了所有服务器,实现了公钥转发scp免输密码等,极大方便了服务器的管理。

最近有个需求,是做数据的异地备份。最简单的用scp脚本喽,但是脚本手动执行是OK的,放入crontab确实不能正常运行。

环境:Ubuntu 14.04

二、解决办法:

  脚本执行失败,立马想到打印详细日志Debug,那scp -v 然后看日志,是因为密钥认证失败。我们SSH打通是基于ssh密钥转发的,

联想到之前crontab里拿不到环境变量的问题,可能问题就是crontab拿不到ssh-agent,所以认证失败。

  经过一顿google发现,keychain可以帮我们解决这个问题。

apt-get install keychain

keychain ~/.ssh/id_rsa  输入自己的加密短语

当然.ssh目录要上传自己的公钥和密钥,权限600

然后修改~/.profile,加入

export HOSTNAME=`hostname` # HOSTNAME not set some machines
if [ -x /usr/bin/keychain -a -f $HOME/.keychain/${HOSTNAME}-sh ] ; then
/usr/bin/keychain --clear $HOME/.ssh/id_rsa
source $HOME/.keychain/${HOSTNAME}-sh
fi

然后在脚本中加入:

source $HOME/.keychain/${HOSTNAME}-sh

三、参考:

centos6安装keychain

yum install https://kojipkgs.fedoraproject.org//packages/keychain/2.8.0/2.fc23/noarch/keychain-2.8.0-2.fc23.noarch.rpm

http://www.snowfrog.net/2007/11/15/ssh-ssh-agent-keychain-and-cron-notes/

https://wiki.gentoo.org/wiki/Keychain/zh-cn

https://serverfault.com/questions/92683/execute-rsync-command-over-ssh-with-an-ssh-agent-via-crontab

【Linux】 无密码SCP在Crontab中失效的解决办法的更多相关文章

  1. js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq

    js_html_input中autocomplete="off"在chrom中失效的解决办法 分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocompl ...

  2. Android 编程下短信监听在小米手机中失效的解决办法

    相信很多人写的短信监听应用在小米手机上是拦截不到短信的,这是因为小米对短信的处置权优先分给了系统.我们可以在短信的[设置]→[高级设置]→[系统短信优先]中发现短信的优先处理权默认是分给系统的,只要关 ...

  3. js_html_input中autocomplete="off"在chrom中失效的解决办法

    分享网上的2种办法: 1-可以在不需要默认填写的input框中设置 autocomplete="new-password"(已实测,有效) 网上咱没有找到对其详细解释,但是发现16 ...

  4. Linux提示no crontab for root的解决办法

    Linux提示no crontab for root的解决办法 安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/s ...

  5. [转]iOS Safari 中click点击事件失效的解决办法

    iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...

  6. iOS Safari 中click点击事件失效的解决办法

    问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document  ...

  7. vue中router-link的click事件失效的解决办法

    title: vue中router-link的click事件失效的解决办法 toc: false date: 2018-12-04 16:28:49 categories: Web tags: vue ...

  8. IE6/IE7下margin-bottom失效兼容解决办法及双倍边距问题

    (从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-04-08) 一.IE6/IE7下margin-bottom失效兼容解决办法 1.用padding-bottom代替:2.在 ...

  9. xcode4 语法高亮和自动补全失效的解决办法

    xcode4 语法高亮和自动补全失效的解决办法xcode4有一个bug,某些时候会造成类名的着色显示不出来,还有就是代码补全不能完全显示,而且没有参数. 解决方法: 首先关闭项目窗口,然后到Organ ...

随机推荐

  1. Appium Python 六:管理应用和Activity

    管理应用 1. 将当前应用放到后台 执行之后,应用会被放到后台特定时间.比如这里就是5秒,5秒过后,应用会重新回到前台. driver.background_app(5) 官网示例: driver.b ...

  2. Linux对文件归档和压缩(学习笔记八)

    一.归档和压缩 压缩命令工具:gzip,bzip2 归档命令工具:tar 二.压缩 2.1.gzip gzip是一种标准的.广泛应用的文件压缩和解压缩实用工具.gzip允许文件并置.用gzip压缩文件 ...

  3. react 引入 json

    1.对 json 里面的数据进行增删改查

  4. exception PLS-00215: String length constraints must be in range (1 .. 32767)

      exception PLS-00215: String length constraints must be in range (1 .. 32767) CreationTime--2018年8月 ...

  5. PmExceptionMapper.xml 20160712

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  6. 简单易懂的Ubuntu生存战略:开启无线网卡的wifi热点,ap模式

    在ubuntu下如何把无线网卡设置成可供wifi设备上网的接入点 因为某些移动设备对wifi热点的要求有些苛刻,p2p模式的无线连接方式虽然易设置,但是实用性不高. 相对而言,创建一个虚拟无线路由器成 ...

  7. swift上传图片

    import UIKit import AFNetworking class YJRequest: NSObject { //#pragma mark - 上传图片 func uploadImageW ...

  8. PL/SQL配置oracle客户端,登录远程数据库配置

    本地未安装Oracle数据库,但又想使用PL/SQL连接服务器端的数据库. 1.新建NETWORK文件夹, 在该文件夹下新建ADMIN文件夹, 在该文件夹下新建tnsnames.ora文件(拷贝下面的 ...

  9. java 快速求素数

    package test ; import java.util.Scanner ; public class hello { public static void main(String [] arg ...

  10. HDUOJ----1114(多重背包)悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

    悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...