基于 SOCKS 代理的 Python SSH 客户端

3 投票
2 回答
4112 浏览
提问于 2025-04-16 16:34

我需要通过代理 SOCKS 连接到 SSH 服务器。我看了 paramiko 和 twisted.conch 的文档,但没有找到关于 SOCKS 代理的支持。

2 个回答

2

Paraproxy(这是一个为SSH2 ProxyCommands设计的Paramiko插件)看起来可以实现这个功能。虽然网上没有相关的文档,但我下载了源代码并查看了README文件,发现了以下内容:

Paraproxy是一个很棒的“paramiko” SSH2模块的补充。虽然paramiko对SSH(2)的支持非常好,但它缺少ProxyCommand这个功能。

ProxyCommands可以用来连接VPN隧道,同时它们还提供了许多其他很不错的功能。

一旦导入Paraproxy,它就会与paramiko提供的SSHClient类连接,这样就可以完全支持SSH ProxyCommands了。

现有代码不需要做任何修改。

试试看吧!

4

这个套接字包装器让你可以使用静态的ssh隧道。我找到了解决我问题的一个常见方法:

  1. 使用paramiko的 SSHClient
  2. 用你自己的类来扩展 SSHClient
  3. 重新实现 connect() 方法: 我们不再使用标准的套接字对象,而是传入一个来自python包 sockipy 的固定代理套接字

撰写回答