最后说说在shell脚本中使用ssh的注意
一般情况下执行ssh -p PORT IP "command" 默认是使用当前用户到远程主机执行命令的。
若将ssh -p PORT IP "command" 封装进了脚本,则会使用执行脚本时使用的用户登录至远程主机执行命令。
我们的应用中将ssh -p PORT IP "command"封装进了脚本,该脚本会在keepalived实例进入MASTER状态后由keepalived调用,而keepalived是由root用户启动的所以实际上会以root用户至远程主机执行命令。而我们配置的无密码ssh至远程主机用的是非root用户的工作(一般情况下是当前用户的公钥),因此远程命令不能成功执行,提示需要密码,即使是在ssh -p PORT IP "command"中加入用户信息变为ssh -p PORT norootuser@IP "command"也不行。因此通过生成root用户的公钥并配置无密码ssh到远程主机来规避了该问题。