最近需要在脚本中对两台服务器的资源进行同步,用crontab定时运行这个sh脚本,问题出来的,sh脚本中的命令本身运行时,需要输入登入另一台服务器的密码。怎么才能解决让sh自动去运行,而不用人工处理呢?
经过老程序员的提醒,告诉我可以采用ssh解决此问题,那么接下来我就开始说说如何解决。
一. 方法1
如果要从一台服务器(比如:192.168.1.111)传输文件到另一个服务器(192.168.1.131),并且不需要每次输入对方密码
1.方法1
在192.168.1.111上
# ssh-keygen -t rsa
这一步是生成密钥
# scp ~/.ssh/id_rsa.pub root@192.168.1.131:~/.ssh/authorized_keys
2.方法2
# ssh-keygen -t rsa
# ssh-copy-id -i id_rsa.pub root@192.168.1.131
总结:可以看到这两种方法就是第二步不相同,不同的拷贝方式到远程服务器上而已。这样192.168.1.111上生成的密钥就拷贝到192.168.1.131上了。
完成后,192.168.1.111登录192.168.1.131就无需输入密码了。
在CetOS下这样做有时会出现无效的现象,只需执行如下命令,重新加载即可:
restorecon -R -v /root/.ssh
注意:root用户这里要根据你无密码登录的用户而定restorecon -R -v /{your login name}/.ssh