spug
spug copied to clipboard
功能: 新增主机,支持跳转服务器/跳板机登录。
这个如果直接支持jumpserver这种跳板机貌似不好处理。 可能需要一个agent项目作为和server交互的桥梁,腾讯云devops部署到内网也是这么处理的。 发布和执行命令,都通过这个有外网权限的agent和内网主机沟通。如果有计划搞这类的agent,用go吧。
可以参考如下实现:
#!/usr/bin/env python3
import os
import paramiko
ssh_key_filename = os.getenv('HOME') + '/.ssh/id_rsa'
jumpbox_public_addr = '111.111.111.111'
jumpbox_private_addr = '10.0.5.10'
target_addr = '10.0.5.20'
jumpbox=paramiko.SSHClient()
jumpbox.set_missing_host_key_policy(paramiko.AutoAddPolicy())
jumpbox.connect(jumpbox_public_addr, username='root', key_filename=ssh_key_filename)
jumpbox_transport = jumpbox.get_transport()
src_addr = (jumpbox_private_addr, 22)
dest_addr = (target_addr, 22)
jumpbox_channel = jumpbox_transport.open_channel("direct-tcpip", dest_addr, src_addr)
target=paramiko.SSHClient()
target.set_missing_host_key_policy(paramiko.AutoAddPolicy())
target.connect(target_addr, username='root', key_filename=ssh_key_filename, sock=jumpbox_channel)
stdin, stdout, stderr = target.exec_command("ifconfig")
for line in stdout.read().split(b'\n'):
print(str(line))
target.close()
jumpbox.close()
这个如果直接支持jumpserver这种跳板机貌似不好处理。 可能需要一个agent项目作为和server交互的桥梁,腾讯云devops部署到内网也是这么处理的。 发布和执行命令,都通过这个有外网权限的agent和内网主机沟通。如果有计划搞这类的agent,用go吧。
这个你们自己实现了吗 我们现在多个region 没有跳板机 不知道怎么部署