最近在做基于jenkins的自动化部署,需要将编译出的war包从一台机器拷贝到另一台机器。
不过用scp命令拷贝时,需要输入密码。通过shell解决相对复杂一些。
后来查来查去,发现可以通过在两台服务器之间建立信任关系来实现免密码的拷贝。操作方式如下:
1、在client机器上执行下面的命令,生成本机的安全公钥、私钥
ssh-keygen -b 1024 -t rsa2、将生成在/root/.ssh目录下的id_rsa.pub文件拷贝到目标机器的/root/.ssh目录下,并重命名为authorized_keys。如果该机要和多个机器建立信任,只需要将其他机器的rsa pub key追加到authorized_keys文件的后面即可。
3、再执行scp拷贝时,就不需要密码了。如下图所示:
【补充】
2016-9-8:今天为一个机器增加免密ssh登陆权限,发现拷贝authorized_keys时,提示/root/.ssh目录不存在。手动创建并拷贝后,每次scp仍然要密码。
修改/etc/ssh/sshd_config文件,打开AuthorizedKeysFile .ssh/authorized_keys的注释,service ssh restart重启ssh服务后,问题仍然无法解决。
后来修改/etc/selinux/config,将SELINUX设置成disabled后,重启系统,问题解决。(注:该方法安全性会变差,暂时没研究selinux如何配置来解决此问题)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。