spug icon indicating copy to clipboard operation
spug copied to clipboard

功能: 新增主机,支持跳转服务器/跳板机登录。

Open leeyongda opened this issue 3 years ago • 3 comments

leeyongda avatar Mar 07 '23 06:03 leeyongda

这个如果直接支持jumpserver这种跳板机貌似不好处理。 可能需要一个agent项目作为和server交互的桥梁,腾讯云devops部署到内网也是这么处理的。 发布和执行命令,都通过这个有外网权限的agent和内网主机沟通。如果有计划搞这类的agent,用go吧。

onecer avatar Mar 14 '23 09:03 onecer

可以参考如下实现:


#!/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()

dolfly avatar Mar 23 '23 11:03 dolfly

这个如果直接支持jumpserver这种跳板机貌似不好处理。 可能需要一个agent项目作为和server交互的桥梁,腾讯云devops部署到内网也是这么处理的。 发布和执行命令,都通过这个有外网权限的agent和内网主机沟通。如果有计划搞这类的agent,用go吧。

这个你们自己实现了吗 我们现在多个region 没有跳板机 不知道怎么部署

lx308033262 avatar Apr 08 '24 03:04 lx308033262