我有一個非常簡單的任務:使用ssh,我想創建一個隧道,將流量從本地機器轉發到遠程機器上的特定端口。我可以在命令行中執行此操作:如何使用純Python輕鬆創建本地SSH隧道
ssh -N -L 123:127.0.0.1:456 [email protected]
然後,如果我運行:
telnet localhost 123
它登錄到remotehost
和運行
telnet 127.0.0.1 456
相當於我已經成功地做這與沿線的東西有關;
subprocess.Popen(['ssh', '-N', '-L', '%i:127.0.0.1:%i' % (new_port, old_port), ssh_user + '@' + ip_addr])
但是現在我想擺脫這種情況,只使用Python - 不需要外部進程。
我試過使用fabric.context_managers.remote_tunnel,但除非我誤解了這是爲了創建從遠程位置啓動的隧道,而不是從本地計算機啓動。也就是說,它相當於將SSH連接到遠程計算機並從那裏創建SSH隧道,這對我而言是愚蠢的。我想我可以設置遠程主機實際上是本地機器,但這似乎效率低下,老實說,我甚至不知道如何做到這一點。
我也試過forward.py on paramiko,它不起作用,因爲我的私鑰是加密的。我想修改腳本來處理這個問題,並且只是簡化它以滿足我的需求,但腳本和paramiko庫都很艱鉅,我不知道如何開始。
當然有一個簡單的方法來做到這一點?我似乎到目前爲止如此接近。
爲什麼你不想使用Popen或織物? – Harman