python中使用paramiko库的SOCKS动态应用程序级端口转发

2024-03-28 15:32:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试通过以下方式连接到SSH服务器:

import paramiko
import socks
sock = socks.socksocket()
sock.setproxy(socks.PROXY_TYPE_SOCKS5, 'localhost', 22, True)
sock.connect((**IP address of SSH server**, 22))
t = paramiko.Transport(sock)
t.connect( None, 'username', 'password')

得到以下错误

^{pr2}$

我的目标是模拟Putty创建SSH SOCKS代理的方式,如下所示: Configure PuTTY To Create SSH SOCKS Proxy For Secure Browsing。 或同等产品

ssh -D [localhost]port

用于本地动态应用程序级端口转发。在

有人能解释一下,有什么不对劲的地方吗?如何正确使用paramiko? 谢谢。在

p.S。 我发现了这个https://stackoverflow.com/a/5823383/1264304,但是我没有成功地实现它。有人吗?在


Tags: import服务器localhostparamikotypeconnect方式ssh
1条回答
网友
1楼 · 发布于 2024-03-28 15:32:23

Paramiko可以本机连接到ssh。您不需要SOCKS库来连接ssh服务器。此外,当您尝试时,远程服务器拒绝连接,因为您没有进行身份验证。在

正确的方法是连接paramiko的sshClient

import paramiko
ssh = paramiko.SSHClient()
ssh.connect('yourServer', username='you', 
    password='yay!')

然后,得到底层transport

^{pr2}$

最后,让ssh客户端用open channel转发一个tcp端口:

trans.open_channel("forwarded-tcpip", dest_addr=('serverIP',8000), src_addr=('localhost'),8000))

这将导致本地端口8000上的任何连接通过此ssh会话被远程转发到端口8000。在

相关问题 更多 >