通过堡垒主机配置SSH代理,实现DeployHQ访问AWS私有VPC机器
解决方案:通过堡垒主机实现DeployHQ到AWS私有VPC机器的自动部署
方案一:堡垒主机端口转发(基于iptables)
这种方式通过堡垒主机的端口映射,把外部请求转发到私有VPC内的目标机器,适合需要固定端口对应机器的场景。
1. 堡垒主机基础配置
- 确保堡垒主机有公网IP,安全组仅允许DeployHQ的IP段访问TCP端口18022-18025,同时允许堡垒主机访问私有VPC内所有目标机器的22端口。
- 开启IP转发(让堡垒主机具备路由能力):
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p
2. 配置端口转发规则
在堡垒主机上执行iptables命令,为每个目标机器映射端口:
# 转发18022到10.10.0.2:22 iptables -t nat -A PREROUTING -p tcp --dport 18022 -j DNAT --to-destination 10.10.0.2:22 iptables -A FORWARD -p tcp -d 10.10.0.2 --dport 22 -j ACCEPT # 转发18023到机器B(假设私有IP为10.10.0.3):22 iptables -t nat -A PREROUTING -p tcp --dport 18023 -j DNAT --to-destination 10.10.0.3:22 iptables -A FORWARD -p tcp -d 10.10.0.3 --dport 22 -j ACCEPT # 同理添加18024、18025对应机器C、D的规则
- 保存规则避免重启失效:Ubuntu用
netfilter-persistent save,CentOS用iptables-save > /etc/sysconfig/iptables
3. 目标机器配置
将DeployHQ提供的公钥,添加到目标机器对应SSH用户的~/.ssh/authorized_keys文件中,同时确保权限正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
4. DeployHQ项目配置
每个目标机器对应一个DeployHQ部署项目:
- Hostname:堡垒主机的公网IP或域名
- Port:对应转发端口(如18022对应10.10.0.2)
- Username:目标机器的SSH用户名
- 确认DeployHQ已配置对应私钥(平台会自动用匹配的公钥完成验证)
方案二:SSH代理跳转(更安全,无需暴露多端口)
这种方式让DeployHQ通过堡垒主机做SSH跳转,直接连接私有VPC内的机器,无需在堡垒主机上开多个转发端口,安全性更高。
1. 堡垒主机配置
- 安全组仅允许DeployHQ的IP段访问TCP端口22
- 将DeployHQ的公钥添加到堡垒主机对应SSH用户的
~/.ssh/authorized_keys文件中 - 开启SSH代理转发:编辑
/etc/ssh/sshd_config,设置AllowAgentForwarding yes,然后重启服务:systemctl restart sshd
2. 目标机器配置
将DeployHQ的公钥添加到目标机器对应SSH用户的~/.ssh/authorized_keys文件中,权限要求同方案一。
3. DeployHQ项目配置
每个目标机器对应一个DeployHQ部署项目:
- Hostname:目标机器的私有IP(如10.10.0.2)
- Port:22
- Username:目标机器的SSH用户名
- 在SSH高级设置中添加代理命令:
ssh -W %h:%p 堡垒主机用户名@堡垒主机公网IP -p 22 - 开启DeployHQ的SSH Agent Forwarding选项(部分平台需手动勾选)
测试与注意事项
- 先在本地测试连接:方案一用
ssh -p 18022 目标用户@堡垒主机IP,方案二用ssh -o ProxyCommand="ssh -W %h:%p 堡垒用户@堡垒主机IP" 目标用户@目标机器私有IP,确保能正常登录目标机器。 - 安全层面:严格限制堡垒主机对外开放的端口仅允许DeployHQ的IP访问,避免无关请求。
- 密钥权限:所有
.ssh目录必须是700权限,authorized_keys必须是600权限,否则SSH会拒绝身份验证。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

