ansible控制主机和受控主机之间免密及提权案例

这篇具有很好参考价值的文章主要介绍了ansible控制主机和受控主机之间免密及提权案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

案例描述

环境准备

案例一--免密远程控制主机

效果展示:

解决方案

 1.添加主机

2.通过ssh-key生成密钥对

3.生成ssh-copy-id

 4.验证

案例二-----免密普通用户提权

 效果展示

解决方案

1.使用普通用户,与案例一   一样,进行发送密钥对和id

keygen

 copy-id

测试

2.在node1用户下的/etc/sudoers/中

 查看:

相关知识:

1.gpasswd

 2.ssh-copy-id

 3.ssh-keygen


案例描述

一、描述:控制主机和受控主机通过root用户以免密验证远程控制受控主机实施对应任务

二、描述: 控制主机和受控主机通过普通用户以免密验证远程控制主机实施特权控制操作

环境准备

我这里一共三台主机,一个控制端,两个受控端

ansible控制主机和受控主机之间免密及提权案例,ansible,Linux,ansible,linux,运维

案例一--免密远程控制主机

描述:控制主机和受控主机通过root用户以免密验证远程控制受控主机实施对应任务

 为了确保在ansible执行中,各个主机不会受到这些限制,我们可以提供密钥保存到各个主机上,以实现免密登陆效果。

效果展示:

设置之前效果:

[root@control ~]# ssh root@node1
The authenticity of host 'node1 (192.168.197.153)' can't be established.
ECDSA key fingerprint is SHA256:p1vEMDKw2flRy/TI2CE3STJ451XMUm+Sg7/ztyJMaF4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'node1,192.168.197.153' (ECDSA) to the list of known hosts.
root@node1's password:
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Wed Aug  2 02:55:02 2023 from 192.168.197.1
[root@node1 ~]#

 设置之后效果:

[root@control ~]# ssh node1
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Wed Aug  2 05:05:59 2023 from 192.168.197.152

解决方案

 1.添加主机

在/etc/hosts下

192.168.197.153 node1 node1.example.com
192.168.197.154 node3 node1.example.com

2.通过ssh-key生成密钥对

ssh-keygen是一个用于生成SSH密钥对的命令行工具。SSH密钥对由公钥和私钥组成,用于通过SSH协议进行安全的身份验证。

[root@control ~]# ssh-keygen -t RSA
Generating public/private RSA key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6338jg7huU2z/sTmRfgax98A1g/nvbHYyIu5woTOSmY root@control
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|                 |
|             . . |
|        S . o + o|
|       . + + o O.|
|     Eo + +.o *.O|
|    +  + + =*B+**|
|     .. . +BBOB+o|
+----[SHA256]-----+

3.生成ssh-copy-id

 ssh-copy-id是一个方便的工具,用于将本地计算机上的公钥复制到远程服务器的授权密钥列表中,以实现无密码的SSH登录。

[root@control ~]# ssh-copy-id  -i node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node1's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node1'"
and check to make sure that only the key(s) you wanted were added.

 4.验证

[root@control ~]# ssh node1
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Wed Aug  2 05:10:12 2023 from 192.168.197.152
[root@node1 ~]#

[root@control ~]# ssh node2
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last login: Wed Aug  2 05:10:12 2023 from 192.168.197.152
[root@node2 ~]#

 也可以通过ansible的ping模块进行测试

首先在/etcansible/hosts下添加两个主机名称

ansible控制主机和受控主机之间免密及提权案例,ansible,Linux,ansible,linux,运维

 测试

[root@control ~]# ansible node1,node2 -m ping -o
node1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"}
node2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"},"changed": false,"ping": "pong"}

 

案例二-----免密普通用户提权

描述: 控制主机和受控主机通过普通用户以免密验证远程控制主机实施特权控制操作

 效果展示

没提权之前,是执行不了某些权限的,如需要root权限去添加用户

[redhat@control ~]$ ssh node1 useradd user1
useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

 提权之后:

[redhat@control ~]$ ssh node1  sudo useradd user1
[redhat@control ~]$

解决方案

1.使用普通用户,与案例一   一样,进行发送密钥对和id

keygen

[redhat@control ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/redhat/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/redhat/.ssh/id_rsa.
Your public key has been saved in /home/redhat/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:2JMBtnjN6BCC7cUpqkeZqWgKvSm3DyIhcbd8LdUYiIw redhat@control
The key's randomart image is:
+---[RSA 3072]----+
| o.+.oo..        |
|. E.*+.* +       |
|.o.*+ + * .      |
|.o*o = = o       |
|=+  o = S        |
|*oo  . . .       |
|*..o             |
|+.+.             |
| o.o.            |
+----[SHA256]-----+

 copy-id

 

[redhat@control ~]$ ssh-copy-id  -i node1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/redhat/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
redhat@node1's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node1'"
and check to make sure that only the key(s) you wanted were added.
 

测试

[redhat@control ~]$ ssh node1 hostname
node1 

 测试添加用户

[redhat@control ~]$ ssh node1 useradd user1
useradd: Permission denied.--------》被拒绝,没有权限
useradd: cannot lock /etc/passwd; try again later.

2.在node1用户下的/etc/sudoers/中

修改:

ansible控制主机和受控主机之间免密及提权案例,ansible,Linux,ansible,linux,运维

查看修改是否成功

[root@node1 ~]# cat /etc/sudoers | grep wheel
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
%wheel  ALL=(ALL)       NOPASSWD: ALL

 然后给权限

gpasswd 就是将redhat用户添加到whell组中,必须要执行这个,不然是会出错的,redhat用户不能正常使用提权

[root@node1 ~]# gpasswd -a redhat wheel
Adding user redhat to group wheel

 [redhat@control ~]$ ssh node1 sudo useradd user1
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists

有警告,但是可用,可能我添加出错了node2可正常使用

 node2机子一样的设置,只需要给%wheel添加一个NOPASSWD,这个%代表组的意思,就是添加在组里面,这个组都可以访问,不需要密码

[redhat@control ~]$ ssh node2  sudo useradd user1
[redhat@control ~]$

 查看:

有用户

ansible控制主机和受控主机之间免密及提权案例,ansible,Linux,ansible,linux,运维

 ansible控制主机和受控主机之间免密及提权案例,ansible,Linux,ansible,linux,运维

 

相关知识:

1.gpasswd

gpasswd -a redhat wheel是一个命令,用于将用户"redhat"添加到"wheel"用户组。

"wheel"用户组通常用于授予系统管理员或特权用户执行敏感操作的权限。通过将用户添加到"wheel"组,可以实现对系统的控制和管理。

请注意,执行此命令需要具有root或sudo特权用户身份。您需要在终端或命令提示符下执行该命令,并提供适当的凭据。

 2.ssh-copy-id

ssh-copy-id是一个方便的工具,用于将本地计算机上的公钥复制到远程服务器的授权密钥列表中,以实现无密码的SSH登录。

要使用ssh-copy-id命令,按照以下步骤进行操作:

  1. 打开终端或命令提示符。
  2. 输入以下命令,并将username替换为您在远程服务器上的用户名,以及hostname替换为远程服务器的主机名或IP地址:
     

    Copy Code

    ssh-copy-id username@hostname 您也可以使用-p选项指定非默认的SSH端口号。例如,如果SSH服务器侦听在2222端口上,则可以使用以下命令:
     

    Copy Code

    ssh-copy-id -p 2222 username@hostname
  3. 按回车键后,它会提示您输入远程服务器的密码(一次性)。
  4. 如果密码验证成功,ssh-copy-id会自动将本地计算机上的公钥追加到远程服务器上的~/.ssh/authorized_keys文件中。
  5. 完成后,您可以尝试使用ssh username@hostname命令登录到远程服务器,此时不再需要输入密码。

请注意,使用ssh-copy-id之前,确保本地计算机已经生成了SSH密钥对,并且具有可用的公钥。如果没有生成密钥对,请先使用ssh-keygen命令生成密钥对。

 3.ssh-keygen

ssh-keygen是一个用于生成SSH密钥对的命令行工具。SSH密钥对由公钥和私钥组成,用于通过SSH协议进行安全的身份验证。

要使用ssh-keygen生成SSH密钥对,请按照以下步骤操作:

  1. 打开终端或命令提示符。
  2. 输入以下命令:
     

    Copy Code

    ssh-keygen
  3. 按回车键以接受默认选项,或根据需要输入自定义选项。
    • 默认情况下,ssh-keygen将在用户主目录下的.ssh文件夹中生成密钥对。
    • 您可以选择为密钥对指定名称和位置,或为其设置密码(提供额外的安全性)。
  4. 在生成密钥对时,可能会提示您输入密码短语(passphrase)。密码短语是对私钥加密的额外保护层,可以为空。
    • 如果设置了密码短语,则在使用私钥进行身份验证时,还需要提供该密码短语。
  5. 当生成密钥对完成后,将在指定的位置生成两个文件:
    • 公钥文件:通常以.pub结尾,包含您的公钥,用于在远程服务器上进行身份验证。
    • 私钥文件:没有特定的文件扩展名,是私人的密钥,必须妥善保管,不要泄露给他人。

请记住,私钥是非常敏感的信息,不应该与他人分享或暴露在不安全的环境中。公钥可以自由地在需要进行身份验证的服务器上进行使用和配置。文章来源地址https://www.toymoban.com/news/detail-633616.html

到了这里,关于ansible控制主机和受控主机之间免密及提权案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ansible inventory 主机清单

    Inventory支持对主机进行分组,每个组内可以定义多个主机, 每个主机都可以定义在任何一个或多个主机组内 。 如果是名称类似的主机,可以使用列表的方式标识各个主机。 vim /etc/ansible/hosts [webservers] 192.168.80.11:2222      #冒号后定义远程连接端口,默认是 ssh 的 22 端口 192

    2024年02月20日
    浏览(34)
  • Ansible主机清单书写演示和ansible.cfg配置文件详解

    目录 主机清单(常见为INI格式) 一.定义主机列表 1.每行写一个 2.主机组 (1)定义简单主机组 (2)指定多台主机时可以通过书写范围来表示 (3)定义嵌套主机组 二.匹配主机和组 1.匹配所有主机 (1)all (2)特殊使用*号,单独使用无效 2.匹配指定主机或组 (1)匹配一个

    2024年02月07日
    浏览(41)
  • 作业:通过两台linux主机配置ssh实现互相免密登陆

    做题步骤 : 一.开启两个Linux主机,并且用ssh连接,要能够ping通 我这里是server:192.168.81.129 client:192.168.81.130 举例 操作如下: 二.在客户端上创建一对密钥 1. 注意:可以看到这对密钥是放在/root/.ssh/id_rsa.pub文件下的,公钥的名字是id_rsa.pub 2.查看一下密钥对 [root@client ~]# ll

    2024年01月17日
    浏览(38)
  • Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)

    按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环境下。具体方法如下: 1) 在服务端安装ansible 2) 配置ansible到远程主机的ssh无

    2024年04月16日
    浏览(38)
  • ansible 修改远程主机nginx配置文件

    设置秘钥   ansible添加主机 ansible测试一下 ping功能 sudo ansible 192.168.1.10 -m ping   测试传送文件到B机 整体目标: 在本机修改好nginx配置文件,并批量更新到目标主机。 分解目标是 1.拷贝文件   2. 重启服务    给所有的目标主机的nginx的配置文件末尾都添加如下: 在ansible的主

    2024年02月12日
    浏览(32)
  • 01_什么是ansible、基本架构、ansible工作机制、Ansible安装、配置主机清单、设置SSH无密码登录等

    1.什么是ansible 1.1.基本介绍 1.2.基本架构 1.3.基本特征 1.4.优点 1.5.ansible工作机制 2.Ansible安装 2.1.机器准备 2.2.安装ansible 2.2.1.安装epel源 2.2.2.安装ansible 2.2.3.查看ansible版本 2.2.4.树状结构展示文件夹 2.2.4.1.其中ansible.cfg的内容如下 2.2.4.2.host的默认内容是 2.3.配置主机清单 2.4.设置

    2024年02月14日
    浏览(42)
  • Linux的SSH远程管理和服务器之间的免密连接

    目录 一、远程管理基础 1.ssh协议 2.ssh原理 3、使用ssh协议传输的命令 4.登录方法 二、免密连接 1.免密连接的原理 2.实战 ssh协议是基于C/S机构的安全通道协议,通信数据进行加密处理,用于远程管理。 ssh的服务名称为sshd。 默认端口号:tcp的22端口 使用公钥传输 第一步:客户

    2024年01月19日
    浏览(44)
  • 两台服务器上的两个docker容器之间配置ssh免密登录

    因为要在两台服务器的容器上使用ucx实现GPU的RDMA,所以需要两个容器之间ssh免密登录 步骤如下(所有步骤均在容器内部进行) 切换成root用户 在容器内部安装openssh: # apt-get install openssh-client openssh-server 编辑ssh的配置文件,更改ssh的端口: # vim /etc/ssh/sshd_config 在最后一行加

    2024年03月13日
    浏览(54)
  • Centos7上的Ansible管理Windows主机的部署

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 使用Centos7去管理公司的多台windows主机,使windows上的文件可以批量更新 输入powershell命令进入powershell模式 输入get-host或者$PSVersionTable命令查看powershell版本 其中win7、window server 2008的默认powershell版本为p

    2024年02月07日
    浏览(47)
  • Ansible fetch 模块 该模块用于从远程某主机获取(复制)文件到本地

    dest :用来存放文件的目录 src :在远程拉取的文件,并且必须是一个 file ,不能是**目录* 可以看到一个执行成功的输出 从客服主机复制文件到本主机 并且 备注ip 或者解析域名

    2024年02月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包