Repolode
pahaz

pahaz/sshtunnel

基于 paramiko 的 Python SSH 隧道库与命令行工具,用于把远程或内网服务端口转发到本地。

Star
1,305
Fork
200
未关闭 Issue
71
最近提交
昨天

这是什么?

sshtunnel 让 Python 代码和命令行都能方便地建立 SSH 端口转发。当 Web 服务或数据库只能通过 SSH 端口访问,或者内网服务器只能经由一台暴露 SSH 的网关连接时,它就能派上用场。

核心类是 SSHTunnelForwarder,可以通过 start() 和 stop() 手动控制,也可以用 open_tunnel 作为上下文管理器,退出时自动关闭隧道。隧道启动后会分配一个本地端口(local_bind_port),应用直接连接该端口即可。认证方式包括密码、带口令的私钥文件,以及 SSH agent 和 ~/.ssh/config 中的密钥。多跳场景下,可以把一个隧道的本地端口作为另一个隧道的入口串联使用。

项目还提供 sshtunnel 命令行工具,通过参数指定 SSH 凭据、远程地址和本地监听地址。它基于纯 Python 实现,在 Windows 和类 Unix 系统上均可运行。

核心功能

  • 01将本地端口转发到只能通过 SSH 访问的远程服务。
  • 02支持代码中手动启停,也支持 with 语句自动管理。
  • 03支持密码、私钥和 SSH agent 等认证方式。
  • 04支持多级隧道串联,访问网关后方的主机。
  • 05提供命令行工具,便于快速建立转发。
  • 06可读取 ~/.ssh/config 中的主机与配置。

适用场景

  • 连接只开放 SSH 端口的服务器上的数据库或 Web 服务。
  • 通过跳板机访问内网主机,用于测试脚本或自动化任务。
  • 在脚本中转发本地虚拟机(如 Vagrant)的端口。
  • 在 CI 或数据管道中自动建立隧道,访问远程资源。

快速上手

  1. 1

    从 PyPI 安装该包

    pip install sshtunnel
  2. 2

    在 Python 中使用 SSHTunnelForwarder 打开隧道并读取 server.local_bind_port

收录于专题

标签

常见问题

sshtunnel 是什么?
基于 paramiko 的 Python SSH 隧道库与命令行工具,用于把远程或内网服务端口转发到本地。 sshtunnel 让 Python 代码和命令行都能方便地建立 SSH 端口转发。当 Web 服务或数据库只能通过 SSH 端口访问,或者内网服务器只能经由一台暴露 SSH 的网关连接时,它就能派上用场。
sshtunnel 可以免费使用吗?用的什么许可证?
sshtunnel 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
sshtunnel 还在维护吗?
活跃维护中。sshtunnel 最近一次提交是在 2026年11月6日。
sshtunnel 适合用来做什么?
连接只开放 SSH 端口的服务器上的数据库或 Web 服务。 通过跳板机访问内网主机,用于测试脚本或自动化任务。 在脚本中转发本地虚拟机(如 Vagrant)的端口。 在 CI 或数据管道中自动建立隧道,访问远程资源。
sshtunnel 怎么安装和运行?
从 PyPI 安装该包: pip install sshtunnel 在 Python 中使用 SSHTunnelForwarder 打开隧道并读取 server.local_bind_port
在哪里获取 sshtunnel?
源代码和安装说明在 GitHub 上:https://github.com/pahaz/sshtunnel

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目