[英]Port forwarding with Paramiko
我正在尝试使用 Paramiko 从 python 应用程序进行一些端口转发。 我可以很好地设置 SSH 连接,但我对如何使用paramiko.Transport
。 我已经找到了这个文件,但我不知道里面发生了什么。 从查看paramiko.Transport
文档来看,似乎有一行使用open_channel
函数,但我不知道如何实现它。 我正在尝试复制一个简单的ssh -L 8000:localhost:8000
。
谁能帮我吗?
请找到一些使用paramiko-1.7.7.1
、 pycrypto-2.6
和pycrypto-2.6
脚本的代码,我确实从中删除了第 115 行到最后的代码(以避免选项解析)。
import paramiko, sys
from forward import forward_tunnel
remote_host = "target_host"
remote_port = 8000
local_port = 8000
ssh_host = "my_ssh_host"
ssh_port = 22
user = "login"
password = "s3cr3t"
transport = paramiko.Transport((ssh_host, ssh_port))
# Command for paramiko-1.7.7.1
transport.connect(hostkey = None,
username = user,
password = password,
pkey = None)
try:
forward_tunnel(local_port, remote_host, remote_port, transport)
except KeyboardInterrupt:
print 'Port forwarding stopped.'
sys.exit(0)
我已经在 Windows 工作站上成功测试了它,使用 Red Hat 下的 ssh 服务器并指向第三台服务器。 (我使用的是Python 2.7.2
)
希望能帮助到你,
您可以使用https://github.com/pahaz/sshtunnel
pip install sshtunnel
代码示例:
import sshtunnel
with sshtunnel.open(
(ssh_host, ssh_port),
ssh_host_key=None,
ssh_username=ssh_user,
ssh_password=ssh_password,
ssh_private_key=None,
remote_bind_address=(REMOTE_HOST, REMOTE_PORT)) as server:
def do_something(port):
# Do something with port
pass
print("LOCAL PORT:", server.local_bind_port)
do_something(server.local_bind_port)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.