Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Ansible - switch ssh用户(在代理中保留密钥)

Ansible - switch ssh用户(在代理中保留密钥)
EN

Stack Overflow用户
提问于 2019-08-05 04:45:01
回答 1查看 1.1K关注 0票数 1

我是一个开发人员,想要使用ansible在VM中为各种项目创建开发设置(每个项目一个VM)。VM管理器命令用于从模板创建VM,该模板包含一个股票操作系统安装(通常是Linux),并添加了一个附加项:专门用于ansible的一个公共ssh密钥已经放置在VM根用户的.ssh/authorized_keys文件中。然后使用全局vars来设置ssh配置:

代码语言:javascript
运行
AI代码解释
复制
ansible_user: root 
ansible_private_key_file: keys/id_rsa_ansible

然后,我的ansible.cfg包含一些ssh代理设置的条目:

代码语言:javascript
运行
AI代码解释
复制
[ssh_connection]
ssh_args = -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s

通过这种设置,我可以启动ansible脚本来执行许多根任务,比如安装包&为一组devs创建用户帐户。

在VM主机上,我使用我的开发用户帐户登录,比如mike。ssh代理设置还确保为用户mike加载的所有ssh键也可以通过ssh连接在VM中使用。

现在,我想作为VM上的用户mike (其帐户现在存在)执行更多特定于开发的任务。主要任务是检查项目代码,它需要mike的ssh键。

使用become使用sudo,它不转发ssh-键,因此这不是一个选项。我不想推私钥,因为它们需要在主机上。不再是私人的了。

下面是主机上的devs用户名&在ssh命令中使用它来实现签出。这很好地限制了对dev用户关键工作的那些项目的访问,而无需进一步配置。

代码语言:javascript
运行
AI代码解释
复制
- name: get the devs username running the deploy
  become: false
  local_action: command whoami
  register: username_on_the_host

- name: Test checkout
  command: ssh -o StrictHostKeyChecking=no -o ForwardAgent=yes {{ username_on_the_host.stdout }}@localhost "mkdir hg && cd hg && hg clone ssh://hg//hg/my_project"

它有效,但它不是一个特别干净的解决方案。

那么,最后要问的问题是:是否有一种更干净的方式来切换ssh会话?一种方法可能是为dev用户运行一个与ssh会话完全独立的剧本,但这似乎不符合ansible的精神。我希望以不同的ssh用户的身份运行整个块、任务或角色。

如果become模块支持在代理中保留ssh-键的become_method ssh,就可以实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2019-08-07 03:18:41

汤姆·š是完全正确的。设置ansible_user似乎以某种方式切换了连接的ssh用户。这可能是通过一个ssh mike@localhost完成的,而不需要重新建立剧本连接,但这是推测。

但是,必须以某些方式这样做:

  • 在剧本中,我们可以按建议重复主机部分:
代码语言:javascript
运行
AI代码解释
复制
- hosts: test-hosts
  roles:
     - common

- hosts: test-hosts
  vars:
    ansible_user: mike
  roles:
     - user_test
  • 在角色任务中,我们可以使用set_fact (示例显示首先获得部署用户):
代码语言:javascript
运行
AI代码解释
复制
- name: get user running the deploy
  local_action: command whoami
  register: deploy_user

- name: switch to deploy user
  set_fact:
    ansible_user: "{{ deploy_user.stdout }}"
  • 但是,在剧本中这样做不起作用不幸的是,它似乎在执行第一个角色之前设置了全局覆盖默认设置的var (这里的common角色也是以用户mike的身份运行的)。
代码语言:javascript
运行
AI代码解释
复制
- hosts: test-hosts
  roles:
     - common
     - { role: user_test, vars: { ansible_user: mike }}

总之,前两个选项似乎是有效的!

如果ansible文档能够更清楚地说明更改ansible_user在引擎盖下所做的事情,那就太好了,希望这对搜索人员有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57358878

复制
相关文章
ssh密钥登录默认用户外的其他新建用户
把ubuntu用户家目录/home/ubuntu下的.ssh文件夹复制到root用户家目录/root下,发现并不能密钥登录,原因是sshd_config配置文件里禁止root登录了(为了安全)
Windows技术交流
2019/12/25
4K0
用户代理在爬虫中的应用
用户代理对应的英文名称为User-Agent, 简称UA. 其具体内容为一行字符串,用来表征操作系统,浏览器版本等信息,以谷歌浏览器为例,通过快捷键F12的调试模式,可以看到浏览器在发送HTTP请求时的头文件,截图如下
生信修炼手册
2020/11/02
1.5K0
用户代理在爬虫中的应用
在GitLab CI / CD上使用SSH密钥
GitLab当前不支持在构建环境(运行GitLab Runner的环境)中管理SSH密钥的内置支持。
拿我格子衫来
2022/01/24
2.6K0
Git 设置用户名、邮箱和SSH密钥
当我们安装好Git之后第一件事就应该是设置用户名还有邮箱,那么下面就说说怎么设置吧~
全栈程序员站长
2022/10/04
1.5K0
SSH 密钥类型
GitHub 改变了他们的安全协议,不再允许使用使用 SHA-1 加密算法的 RSA 密钥进行访问,而我目前使用 ssh 默认策略生成的就是这种类型的密钥,结果就是无法提交代码。
宋天伦
2023/10/21
6820
Ansible批量更新远程主机用户密码 (包括Ansible批量做ssh互信)
按照集团运维信息安全制度, 需要每个一段时间对线上服务器密码进行一次变更,通过shell脚本部署比较繁琐,所以决定采用ansible脚本对远程主机root密码进行批量重置,该脚本已经在稳定运行在正式环境下。具体方法如下:
洗尽了浮华
2019/05/25
6.2K3
Mac 生成 SSH 密钥
昨天试用 cursor 时想推送代码到 github ,遇到问题,该用 ssh 方式推送,提示没有配置公钥。
明明如月学长
2023/04/11
3K0
Mac 生成 SSH 密钥
SSH密钥认证原理
所谓的密钥认证,实际上是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。
星哥玩云
2022/06/30
1.5K0
在 Linux 中为非 SSH 用户配置 SFTP 环境
在某些环境中,系统管理员想要允许极少数用户在可以传输文件到Linux机器中,但是不允许使用 SSH。要实现这一目的,我们可以使用SFTP,并为其构建chroot环境。
星哥玩云
2022/07/03
4.8K0
在 Linux 中为非 SSH 用户配置 SFTP 环境
git如何使用ssh密钥
首先先来了解一下git的四种传输协议:本地、ssh、git和http,http协议应该说是最常见的一种,因为简单,以下是各个协议的优点与缺点:
benny
2018/12/29
2.6K0
msfconsole-添加 SSH 密钥
post/linux/manage/sshkey_persistence:此模块将向指定用户(或全部)添加 SSH 密钥 use post/linux/manage/sshkey_persistence set SESSION session-id exploit use auxiliary/scanner/ssh/ssh_login_pubkey set rhosts 192.168.1.190 set key_path /root/.msf4/loot/ set username test run
浪子云
2022/03/06
1.2K0
Ansible
172.10.0.18主机不可达,ansible是基于ssh的,ansible不知道172.10.0.18这台主机的用户名和密码,所以ansible无法连接到它。 我们可以在清单文件中加入对应主机的用户名和密码,也可以基于密钥的方式
陳斯托洛夫斯記
2022/10/27
8430
Ansible
自动化运维之Ansible服务部署详述
Ansible基本架构由六个部分组成: Ansible core 核心引擎。 Host inventory 主机清单:用来定义Ansible 所管理的主机,默认是在Ansible的host配置文件中定义被管理主机,同时也支持自定义动态主机清单和指定其他配置文件的位置。 Connection plugins连接插件:负责和被管理主机实现通信。除支持使用ssh连接被管理主机外, Ansible还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到 Ansible。 Playbooks(yaml, injaz2)剧本:用来集中定义 Ansible任务的配置文件,即将多个任务定义在一个剧本中由 Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。 Core modules核心模块:是 Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。 Custom modules自定义模块:用于完成模块功能的补充,可借助相关插件完成记录日志、发送邮件等功能。
星哥玩云
2022/07/25
1.2K0
自动化运维之Ansible服务部署详述
ssh 设置密钥认证登录
SSH 登录安全又方便,但是输密码很不方便,本文记录密钥SSH登录的方法流程。 实验环境 登录机器 Windows 被登录机器 Ubuntu 操作流程 生成私钥公钥 ssh-keygen 在ssh路径下得到 id_rsa, id_rsa.pub Linux 下在 ~/.ssh 文件夹 Windows 在 C:/Users/Administrator/.ssh/ 目录下 将公钥放在 authorized_keys 中 公钥文件 id_rsa.pub 将文件内容复制到 authorized_key
为为为什么
2022/08/06
2.6K0
设置ssh无密钥登录
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的。telnet,因为其不安全性,在linux系统中被搁置使用了。
EltonZheng
2021/01/26
3.2K0
如何在远程 SSH 服务器中创建和添加 SSH 密钥?
SSH 密钥是一种安全的身份验证方法,用于在远程服务器和客户端之间建立安全连接。使用 SSH 密钥可以替代传统的密码身份验证,提供更高的安全性和便利性。本文将详细介绍如何在远程 SSH 服务器中创建和添加 SSH 密钥。
网络技术联盟站
2023/06/09
6.9K0
如何在远程 SSH 服务器中创建和添加 SSH 密钥?
SSH 密钥类型及格式
下面是对ssh-keygen命令的-m key_format参数支持的几种类型的解释及其适用场景:
宋天伦
2023/10/21
1.6K0
ssh代理
ssh隧道技术 1. 用ssh做正向连接 啥叫正向连接?就是client连上server,然后把server能访问的机器地址和端口(当然也包括server自己)镜像到client的端口上。 ssh -L [客户端IP或省略]:[客户端端口]:[服务器侧能访问的IP]:[服务器侧能访问的IP的端口] [登陆服务器的用户名@服务器IP] -p [服务器ssh服务端口(默认22)] 其中,客户端IP可以省略,省略的话就是127.0.0.1了,也就是说只能在客户端本地访问。服务器IP都可以用域名来代替。 举例说明:
小小科
2018/05/02
2.7K0
设置 SSH 通过密钥登录
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
星辰sea
2022/10/29
2.2K0
如何在 Linux 中配置基于密钥认证的 SSH
为方便演示,我将使用 Arch Linux 为本地系统,Ubuntu 18.04 LTS 为远程系统。
用户8989785
2021/09/09
1.6K0

相似问题

ansible 2.4.2中的ansible switch用户

12

是否可以在ansible剧本中为私人回购代理添加ssh密钥?

11

使用ansible分发ssh密钥

17

在Git Windows中向SSH代理添加SSH密钥

13

在ansible playbook文件中指定ssh密钥

331
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文