shell脚本中解决SCP命令需要输入密码的问题

shell脚本中解决SCP命令需要输入密码的问题,第1张

答案:使用密钥文件

这里假设主机A(192.168.1.3)用来获到主机B(192.168.1.4)的文件。

在主机A上执行如下命令来生成配对密钥:

ssh-keygen -t rsa

遇到提示回车默认即可,公钥被存到用户目录下.ssh目录,比如root存放在:

/root/.ssh/id_rsa.pub

将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys,

到主机A中执行命令和主机B建立信任,

例(假设主机B的IP为:192.168.100.4):scp ~/.ssh/id_rsa.pub 192.168.100.4:/root/.ssh/authorized_keys

下面就可以用scp、ssh命令不需要密码来获取主机B的文件了

ssh 192.168.100.4 回车就不需要密码了。

注:其实id_rsa.pub内容添加到对方机器的authorized_keys中就行了

拷贝其他服务器附件归集到主服务器bash shell

[ test@abc01.cn ~]$ cat copy.bash

scp -r test1@app02.abc.cn :/home/test1/tomcat/webapps/app01/WEB-INF/attachment/* /home/test/tomcat/webapps/app01/WEB-INF/attachment/

echo "done! app02. copy finish"

scp -r test2@app03.abc.cn :/home/test2/tomcat/webapps/app01/WEB-INF/attachment/* /home/test/tomcat/webapps/app01/WEB-INF/attachment/

echo "done! app03. copy finish"

增加定时任务

crontab -e

类似编辑vi 在里面粘贴

---shift+zz保存,重启crond服务

root]# service crond restart

引用自 https://www.cnblogs.com/java2sap/p/11424587.html

这里假设主机A(192.168.100.3)想免密SSH登陆B(192.168.100.4)或向B拷贝(scp)文件。

1、在主机A上执行如下命令来生成配对密钥:

ssh-keygen -t rsa

2、遇到提示回车默认即可,公钥被存到用户目录下.ssh目录,比如root存放在:

/root/.ssh/id_rsa.pub

3、将主机A~/.ssh 目录中的 id_rsa.pub 文件复制到主机B的 ~/.ssh/ 目录中,并改名为 authorized_keys

scp ~/.ssh/id_rsa.pub root@192.168.100.4:/root/.ssh/authorized_keys

4、此时在A中用SSH登录B或向B拷贝文件,将不需要密码

脚本如下:\x0d\x0a\x0d\x0a#!/usr/bin/expect -f\x0d\x0a\x0d\x0aset password 密码\x0d\x0a\x0d\x0aspawn scp 用户名@目标机器ip:拷贝文件的路径 存放本地文件的路径 \x0d\x0aset timeout 300 \x0d\x0aexpect "用户名@目标机器ip's password:" #注意:这里的“用户名@目标机器ip” 跟上面的一致\x0d\x0aset timeout 300 \x0d\x0asend "$password\r"\x0d\x0aset timeout 300 \x0d\x0asend "exit\r"\x0d\x0a\x0d\x0aexpect eof\x0d\x0a\x0d\x0a附:scp参数\x0d\x0a-r:拷贝目录\x0d\x0a-c:允许压缩\x0d\x0a\x0d\x0a一个完整的例子\x0d\x0a\x0d\x0a#!/usr/bin/expect -f\x0d\x0aset password 123456\x0d\x0a#download\x0d\x0aspawn scp root@192.168.1.218:/root/a.wmv /home/yangyz/\x0d\x0aset timeout 300 \x0d\x0aexpect "root@192.168.1.218's password:"\x0d\x0aset timeout 300 \x0d\x0asend "$password\r"\x0d\x0aset timeout 300 \x0d\x0asend "exit\r"\x0d\x0aexpect eof \x0d\x0a\x0d\x0a#upload\x0d\x0aspawn scp /home/yangyz/abc.sql root@192.168.1.218:/root/test.sql \x0d\x0aset timeout 300 \x0d\x0aexpect "root@192.168.1.218's password:"\x0d\x0aset timeout 300 \x0d\x0asend "$password\r"\x0d\x0aset timeout 300 \x0d\x0asend "exit\r"\x0d\x0aexpect eof


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11430437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存