赞
踩
需求:公司的服务器不对公网开放, 而使用这些机器则需要跳板机
from paramiko import SSHClient # Set up the proxy (forwarding server) credentials proxy_hostname = 'your.proxy.hostname' proxy_username = 'proxy-username' proxy_port = 22 # Instantiate a client and connect to the proxy server proxy_client = SSHClient() proxy_client.load_host_keys('~/.ssh/known_hosts/') proxy_client.connect( proxy_hostname, port=proxy_port, username=proxy_username, key_filename='/path/to/your/private/key/' ) # Get the client's transport and open a `direct-tcpip` channel passing # the destination hostname:port and the local hostname:port transport = proxy_client.get_transport() dest_addr = ('0.0.0.0', 8000) local_addr = ('127.0.0.1', 1234) channel = transport.open_channel("direct-tcpip", dest_addr, local_addr) # Create a NEW client and pass this channel to it as the `sock` (along with # whatever credentials you need to auth into your REMOTE box remote_client = SSHClient() remote_client.load_host_keys(hosts_file) remote_client.connect('localhost', port=1234, username='remote_username', sock=channel) # `remote_client` should now be able to issue commands to the REMOTE box remote_client.exec_command('pwd')
参考:https://stackoverflow.com/questions/18968069/paramiko-port-forwarding-around-a-nat-router/19039769#19039769
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。