如何通过Ansible命令行借助Inventory手动SSH登录目标机器?
借助Ansible Inventory实现SSH登录的方法
确实没有官方自带的ansible-ssh命令,但可以通过以下几种方式实现你想要的效果,直接复用Ansible Inventory中的主机信息登录,无需记忆IP或手动配置SSH Config:
方法1:用ansible命令直接启动交互式Shell
直接使用ansible命令调用目标主机的交互式bash,命令格式如下:
ansible -i hosts mymachine -m shell -a '/bin/bash -i'
或者更轻量的raw模块版本:
ansible -i hosts mymachine -m raw -a 'exec /bin/bash'
执行后会直接进入目标机器的交互式Shell,完全复用Inventory中配置的用户名、端口、密钥等SSH参数。
方法2:自定义别名模拟ansible-ssh
可以在你的Shell配置文件(比如~/.bashrc或~/.zshrc)中添加一个别名,用ansible-inventory提取Inventory中的主机信息,自动拼接SSH命令:
基础版(仅提取主机地址)
alias ansible-ssh='ssh $(ansible-inventory -i hosts --host $1 | grep ansible_host | cut -d" " -f2)'
使用时直接输入:
ansible-ssh mymachine
增强版(自动带上Inventory中的用户名)
如果你的Inventory中配置了ansible_user字段,可以用这个别名自动拼接用户名和地址:
alias ansible-ssh='ssh $(ansible-inventory -i hosts --host $1 | grep ansible_user | cut -d" " -f2)@$(ansible-inventory -i hosts --host $1 | grep ansible_host | cut -d" " -f2)'
方法3:使用ansible-console进入交互式环境
ansible-console是Ansible自带的交互式控制台工具,进入指定主机的上下文后可以直接启动Shell:
ansible-console -i hosts mymachine
进入控制台后,输入!bash即可切换到目标机器的交互式Shell。
内容的提问来源于stack exchange,提问作者John Pitt
相关产品推荐
相关产品推荐

