服务器
192.168.48.81 # client
192.168.48.82 # bastion
192.168.48.83 # private
password方式
192.168.48.81
groupadd -g 501 ansible
useradd -u 501 -g 501 ansible
passwd ansible # @ansible
192.168.48.82
groupadd -g 501 ansible
useradd -u 501 -g 501 ansible
passwd ansible # @ansible
groupadd -g 502 bastion
useradd -u 502 -g 502 bastion
passwd bastion # @bastion
192.168.48.83
groupadd -g 502 bastion
useradd -u 502 -g 502 bastion
passwd bastion # @bastion
192.168.48.81 -> 192.168.48.83
ssh -o ProxyCommand='ssh -W %h:%p ansible@192.168.48.82' bastion@192.168.48.83
ansible@192.168.48.82's password:
bastion@192.168.48.83's password:
Last login: Fri Jan 23 10:59:07 2015 from 192.168.48.82
......
sshkey方式
192.168.48.81
su - ansible -c "ssh-keygen -b 2048 -t rsa -f ~/.ssh/ansible.pem -q -N ''"
# /home/ansible/.ssh
ansible.pem ansible.pem.pub
192.168.48.82
su - bastion -c "ssh-keygen -b 2048 -t rsa -f ~/.ssh/bastion82.pem -q -N ''"
# /home/bastion/.ssh/
bastion82.pem bastion82.pem.pub
192.168.48.81 -> 192.168.48.82 sshkey
su - ansible
ssh-copy-id -i .ssh/ansible.pem.pub '-o StrictHostKeyChecking=no 192.168.48.82'
# 测试
ssh -i .ssh/ansible.pem 192.168.48.82
192.168.48.82 -> 192.168.48.83 sshkey
su - bastion
ssh-copy-id -i .ssh/bastion82.pem.pub '-o StrictHostKeyChecking=no 192.168.48.83'
# 测试
ssh -i .ssh/bastion82.pem 192.168.48.83
ssh.config方式
192.168.48.81
mkdir -p /etc/ansible/keys
cp ansible.pem, ansible.pem.pub, bastion82.pem, bastion82.pem.pub -> /etc/ansible/keys
192.168.48.81 remove /home/ansible/.ssh/{ansible.pem, ansible.pem.pub}
192.168.48.82 remove /home/ansible/.ssh/{ansible.pem, ansible.pem.pub}, /home/bastion/.ssh/{bastion82.pem, bastion82.pem.pub}
192.168.48.83 remove /home/bastion/.ssh/{bastion82.pem, bastion82.pem.pub}
# /etc/ansible/ssh.config
Host bastion-82
User ansible
Hostname 192.168.48.82
IdentityFile /etc/ansible/keys/ansible.pem
Host server-83
User bastion
Hostname 192.168.48.83
IdentityFile /etc/ansible/keys/bastion82.pem
ProxyCommand ssh -q -A -x -i /etc/ansible/keys/ansible.pem -l ansible bastion-82 -W %h:%p
[root@bjyh-48-81 ~]# ssh -F /etc/ansible/ssh.config bastion-82
Last login: Fri Jan 23 17:06:32 2015 from 192.168.48.81
[ansible@bjyh-48-82 ~]$
[root@bjyh-48-81 ~]# ssh -F /etc/ansible/ssh.config server-83
Last login: Fri Jan 23 17:08:41 2015 from 192.168.48.82
[bastion@bjyh-48-83 ~]$
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类