----------------------------**********-------------------------------------------------
免密码登陆
第一步:
执行:ssh-keygen -t rsa,并一直回车,直到结束
系统/root/.ssh/下面会生成 id_rsa(私钥)和 id_rsa.pub(公钥) 两个文件
第二步:
进入到文件夹下面 cd /root/.ssh 把id_rsa.pub 拷贝到目标服务器的/root/.ssh(例如:目标服务器111.111.111.111) scp ./id_rsa.pub root@111.111.111.111:/root/.ssh 出现提示输入yes,并输入目标服务器的密码即可
第三步:
登陆目标服务器,到 /root/.ssh目录下面 执行:cat ./id_rsa.pub >> authorized_keys 到此,即完成免密登陆
在原目标的服务器执行 ssh root@111.111.111.111 即可登陆,无需输入任何信息 以后,其它服务器,只需要执行第二步跟第三步,除非,原服务器生成的密钥有变动,这样都可以实现免密登陆
----------------------------**********-------------------------------------------------
远程操作
第一种:
由于上面已经实现免密码登陆,所以可以直接执行相应命令
result=`ssh root@111.111.111.111 "cd /home;touch kkk.txt &> /dev/null;"'echo $?'` echo $result
注意:result=后面是添加键盘上面跟 ~ 一起的同按键 ` 并不是句号跟分号
第二种:
ssh root@111.111.111.111 > /dev/null 2>&1 << kkmmccc cd /home touch abcdefg.txt exit kkmmccc
远程执行的命令在“<< kkmmccc” 至“ kkmmccc ”之间,kkmmcc可以随便替换,但必须保持开头跟结尾一致,加exit是退出远程,也可把此程序写成一个sh文件直接执行
第三种:
带有变量的操作,通过定义一个sh直接执行
#!/bin/bash #远程替换的源文件绝对路径 sfile=/home/a.txt #远程替换的目标文件绝对路径 dfile=/home/a.txt #目标ip dip=111.111.111.111 #目标端口 dport=22 #将要执行的命令 command="cd /home;touch ceshi.txt" #进行远程替换文件 scp -P ${dport} ${sfile} ${dip}:${dfile} &> /dev/null #进行远程执行命令 result=`ssh -p ${dport} root@${dip} "${command} &> /dev/null;"'echo $?'` #判断远程执行命令是否成功,通过$result判断 if [ $result -eq 0 ]; then echo "命令执行成功" else echo "命令执行失败" fi