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 @   代码家园  阅读(4907)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示