我想從一個使用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
你可以發表你的代碼/你正在使用的一段代碼嗎? –