教培参考
教育培训行业知识型媒体
发布时间: 2024年11月22日 01:51
如果需要在大量的服务器执行相同的操作,或者是部署分布式应用(elk、k8s、geth等)时,一般的做法是写一个批量操作的本地脚本,依次CSP到每一台服务器上,然后SSH到每一台服务器上执行脚本。以下是相关知识点介绍:
SSH
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。
SSH的原理跟HTTPS差不多,都是基于TCP和非对称加密进行的应用层协议。它跟HTTPS的不同之处在于HTTPS通过 数字证书和数字证书认证中心 来防止中间人攻击,而SSH服务器的公钥没有人公证,只能通过其公钥指纹来人工确定其身份。
公钥登陆
理解了非对称加密的原理后,再公钥登陆会非常简单。由于公私钥是唯一的一对,在客户端保障自己私钥安全的情况下,服务端通过公钥就可以完全确定客户端的真实性,所以要实现公钥登陆,我们就要先生成一个公私密钥对。通过ssh-keygen命令来生成密钥对,为了让步骤更完整,我把它们暂时保存到工作目录,默认会保存到/.ssh目录。
把私钥文件./test 的内容放到 客户端的~/.ssh/id_rsa,再使用密码试登陆到服务器后,将公钥内容./test.pub里的内容放到 服务器的~/.ssh/authorized_keys。再次登陆时,ssh 会自动使用自己的私钥来认证,也就避免了输出密码。
批量操作
公钥登陆帮我们避免了每次登陆服务器要输出密码的麻烦,它同时也解决了每个登陆会话都会同步阻塞的问题,这样我们就可以利用ssh的 ssh user@host command方式来直接在服务器上执行命令。
同时,在我们拥有一个ip列表的情况下,使用for循环遍历ip列表,在多个服务器上批量执行命令也就成为了可能。
想了解更多Linux Shell脚本知识点、想快速掌握云计算运维工程师所需的技能,你可以选择专业学习一下。让自己尽快入门云计算,所学即为所用,毕业后快速高薪就业!