一个用 Go 编写的命令行 SSH 隧道管理工具,通过 TOML 配置文件统一管理端口转发。
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
从 PyPI 安装该包
pip install sshtunnel - 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 数据每日更新。
相关项目
简化与多厂商网络设备 SSH 命令行连接的 Python 库,用于执行查看命令和配置变更。
类似 netcat 的命令行工具和 Go 库,无需 Tailscale 账号即可通过其 WireGuard 数据面在两台机器间建立加密连接。
一款终端 TUI 工具,用于浏览、连接和管理 ~/.ssh/config 中的 SSH 主机。
一个用 Rust 编写的极简命令行工具,可将本地 TCP 端口通过远程服务器暴露到公网。
基于 Rust 原生构建的桌面工作台,集成数据库、SSH、SFTP、终端、远程桌面、监控与 AI。