centos实现免密登陆及远程操作

----------------------------**********-------------------------------------------------

免密码登陆

第一步:

执行: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

 

posted @ 2019-06-19 13:55  代码家园  阅读(4884)  评论(0编辑  收藏  举报