随着线上机器的增多,在多台机器上查找日志的需求越来越多了,最近决定写个web版的日志搜索后台,第一个要解决的问题就是频繁的人机交互问题。SSH命令远程执行命令首先需要建立相关主机间的信任关系,否则在执行命令前SSH命令会提示你输入用户密码,不利于脚本的自动化。
建立信任关系步骤:
1)在一台机器上生成本机的公钥和私钥文件:ssh-keygen -t rsa
2)~/.ssh下会出现两个文件:idrsa和idrsa.pub。其中idrsa.pub为公钥文件,将其内容复制到远程主机的
~/.ssh目录下的authorized_keys文件中
然后就可以在不输入密码的情况下在远程主机上执行命令。将上面的过程写成脚本如下:
#!/usr/local/bin/sh filename=$1 remotehost=$2 pub='tmp.pk' remotekey='.ssh/authorized_keys' cat .ssh/$filename > $pub scp $pub $USER@$remotehost:~/ cmd='if [ ! -e '$remotekey' ];then touch '$remotekey'; fi; cat '$pub' >> '$remotekey'; rm -rf '$pub #echo $cmd ssh $USER@$remotehost $cmd