SSH无密码执行远程服务器上的命令或密码这个功能,在牵涉到多台服务器的时候非常有用,如果一个任务牵涉到多台服务器的配合等方面的事情,用这个命令就方便多了,
环境:
Centos 6.5 64bit
假定有两台服务器A,B
在A上以root登录,
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub root@192.168.0.48:/root/
在B上以root登录
检查是否有~/.ssh/authorized_keys这个文件存在,如果不存在,则创建~/.ssh/
cd ~/.ssh
-bash: cd: /root/.ssh: 没有那个文件或目录
cd ~/
mkdir .ssh/
对这个文件夹赋权限 700
chmod 700 ~/.ssh/
cd .ssh/
touch authorized_keys
对anthorized_keys文件赋权限
chmod 600 authorized_keys
将之前A上copy过来的公匙文件的内容复制到anthorized_keys中
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
重启ssh服务
/etc/init.d/sshd restart
------------------------------至此整个流程完成-------------------------------------
可以采用如下方式验证:
在B服务器上新建测试脚本vi /home/sys_monitor/test.sh
#! /bin/bash
echo "0.49"
保存后赋执行权限
cd /home/sys_monitor/
chmod a+x test.sh
在A上以root执行命令ssh root@192.168.0.49 '/home/sys_monitor/test.sh'
0.49
证明执行成功
============================
错误:The authenticity of host 192.168.0.xxx can't be established.
执行 ssh -o StrictHostKeyChecking=no 192.168.0.xxx
-----------------------------------------------------
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.xx.xx