| Crates.io | ssh-manager |
| lib.rs | ssh-manager |
| version | 0.1.0 |
| created_at | 2026-01-16 07:02:57.932442+00 |
| updated_at | 2026-01-16 07:02:57.932442+00 |
| description | SSH 配置管理器:根据网络环境自动切换 SSH 配置,支持多个网络环境和跳板机配置 |
| homepage | |
| repository | https://github.com/yourusername/ssh-manager |
| max_upload_size | |
| id | 2048051 |
| size | 161,101 |
SSH 配置管理器:根据网络环境自动切换 SSH 配置,实现不同网络环境下使用不同 proxy 的自动化配置。
在不同网络环境下,自动采用不同的 proxy,实现 SSH config 的自动化配置。
~/.ssh/config当前网络:work(192.168.12.0/24)
访问 epyc-9654(work 网络的主机):
work网络 -> epyc-9654(直接连接)访问 home-server(home 网络的主机):
work网络 -> home-proxy -> home-server(通过跳板机)当前网络:home(192.168.1.0/24)
访问 epyc-9654(work 网络的主机):
home网络 -> work-proxy -> epyc-9654(通过跳板机)访问 home-server(home 网络的主机):
home网络 -> home-server(直接连接)当前网络:other(未识别的网络)
访问 epyc-9654(work 网络的主机):
other网络 -> work-proxy -> epyc-9654(通过跳板机)cargo run -- --load-config ~/.ssh/config
这会分析你的 ~/.ssh/config 文件,自动生成 config.toml 配置文件。
根据实际情况编辑 config.toml:
# 定义网络环境
[networks]
work = ["192.168.12.0/24"]
home = ["192.168.1.0/24"]
# 配置跳板机(公网IP会自动推断可以从所有网络访问)
[proxies.work-proxy]
jump_host = "vyatta@202.120.40.82" # 公网IP,自动允许从所有网络访问
network_name = "work" # 用于访问work网络的主机
# 配置主机
[hosts.epyc-9654]
hostname = "192.168.12.169"
user = "mbs"
network_name = "work" # 属于work网络
cargo run -- --config config.toml
程序会:
~/.ssh/config 文件程序会自动推断连接关系,简化配置:
公网跳板机自动推断:
202.120.40.82),自动允许从所有网络访问accessible_from_networks内网主机自动推断:
network_name,自动建立跳板机连接network_name 匹配主机的 network_name 时,自动连接[networks]
work = ["192.168.12.0/24"]
home = ["192.168.1.0/24"]
[proxies.work-proxy]
jump_host = "vyatta@202.120.40.82" # 公网IP,自动推断
network_name = "work"
[hosts.epyc-9654]
hostname = "192.168.12.169"
user = "mbs"
network_name = "work" # 自动推断连接关系
程序使用有向图模型表示网络连接关系:
节点类型:
network:网络环境(home/work/other)proxy:跳板机(work-proxy/home-proxy)host:目标主机(epyc-9654/amd-server)边表示可达性:
network -> host:同网络可以直接访问network -> proxy:可以从该网络访问跳板机proxy -> host:跳板机可以访问该主机路径查找:
# 使用默认配置文件 config.toml
cargo run
# 指定配置文件
cargo run -- --config my-config.toml
# 从 SSH config 生成配置文件
cargo run -- --load-config ~/.ssh/config --output config.toml
~/.ssh/config 文件config.toml 文件