我想从一个使用paramiko的python应用程序做一些端口转发。我可以设置SSH连接,但我有点难以理解如何使用paramiko.transport。我已经找到了this file,但我无法弄清楚发生了什么。从看paramiko.Transport docs,似乎只使用open_channel函数的一行,但我无法解决如何实现。我试图复制一个简单的ssh -L 8000:localhost:8000。与paramiko端口转发
任何人都可以帮我吗?
我想从一个使用paramiko的python应用程序做一些端口转发。我可以设置SSH连接,但我有点难以理解如何使用paramiko.transport。我已经找到了this file,但我无法弄清楚发生了什么。从看paramiko.Transport docs,似乎只使用open_channel函数的一行,但我无法解决如何实现。我试图复制一个简单的ssh -L 8000:localhost:8000。与paramiko端口转发
任何人都可以帮我吗?
请找使用paramiko-1.7.7.1
,pycrypto-2.6
和forward.py script从中我也从线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站点使用ssh服务器在Red Hat下进行了测试,并指向第三台服务器。 (我使用Python 2.7.2
)
希望它能帮助,
“forward.py”链接已损坏。请看这一个:https://github.com/paramiko/paramiko/blob/master/demos/forward.py – alanjds
您可以使用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)
看起来像代码示例中的缩进是不正确的...? – Petri
缩进不正确,编辑和修复。 – datashaman
此软件包不会执行远程端口转发,只能在本地进行。 – datashaman
所以,我已经成功地得到一点点进一步与这一点,并认为我可能会吠叫错误的树。我已经研究了如何通过调用open_channel命令来调用open_channel命令,但是当我尝试打开一个直接或转发的tcpip连接时,我得到了服务器的Administratively禁止,这对于-L端口从正常的SSH会话转发。有任何想法吗? – TimD
你可以发表你的代码/你正在使用的一段代码吗? –