2
这个楼主还没有留下简介。
当前还没有回复,欢迎成为第一个参与讨论的人。
前面我们已经让 Windows 客户端加入 OpenZiti 网络,也配置了服务访问策略。本篇把这些知识用到 SSH:让 Windows 电脑通过 Ziti 域名连接第 7 篇的 Ubuntu 服务器。
本文假设 SSH 服务和 Quickstart Router 运行在同一台 Ubuntu 主机上。访问路径如下:
textWindows SSH 客户端 → Ziti Desktop Edge → OpenZiti 网络 → Ubuntu 上的 Quickstart Router → 127.0.0.1:22 上的 SSH 服务
Quickstart 创建的 Router 启用了 tunneler 功能,可以承载服务。官方 创建第一个服务和 SSH 服务拓扑介绍了相同的配置关系。
确认 Ubuntu 的 SSH 服务正在监听。
在 Ubuntu 上执行:
bashsudo ss -lntp '( sport = :22 )'
确认 SSH 可以通过本机 127.0.0.1:22 访问。如果 SSH 使用其他端口,后面 host.v1 配置中的端口也要相应修改。
登录 OpenZiti 控制器,找到 Router 身份。
使用安装 Quickstart 的 Ubuntu 账号执行:
bashsource "$HOME/.ziti/quickstart/$(hostname -s)/$(hostname -s).env"
zitiLogin
如果安装时使用了自定义目录,请改用实际的 .env 文件。接着查看身份和 Router:
bashziti edge list identities ziti edge list edge-routers
找到这台 Ubuntu 上承载服务的 Router 所对应的身份名称。后面的 Bind 策略需要使用该身份。
创建 SSH 服务及其配置。
创建客户端拦截配置。Windows 客户端访问 ubuntu-ssh.ziti:22 时,Ziti Desktop Edge 会拦截连接:
bashziti edge create config ssh-intercept intercept.v1 \
'{"protocols":["tcp"],"addresses":["ubuntu-ssh.ziti"],"portRanges":[{"low":22,"high":22}]}'
创建服务端承载配置,把流量送到 Router 所在主机的 SSH 服务:
bashziti edge create config ssh-host host.v1 \
'{"protocol":"tcp","address":"127.0.0.1","port":22}'
将两个配置关联到新服务:
bashziti edge create service ubuntu-ssh \ --configs ssh-intercept,ssh-host
如果 Router 和 SSH 服务不在同一个网络命名空间中,127.0.0.1 指向的是 Router 自己;此时要把它改成 Router 实际能够访问的 SSH 地址。
创建 Dial 和 Bind 策略。
允许第 8 篇的 Windows 身份访问服务:
bashziti edge create service-policy ubuntu-ssh-dial Dial \
--identity-roles '@windows-laptop' \
--service-roles '@ubuntu-ssh'
然后把下面的占位值替换成第 2 步查到的 Router 身份名称,授权它提供服务:
bashSSH_HOST_ID='替换为实际的Router身份名称'
ziti edge create service-policy ubuntu-ssh-bind Bind \
--identity-roles "@${SSH_HOST_ID}" \
--service-roles '@ubuntu-ssh'
Dial 授权客户端使用服务,Bind 授权服务端身份提供服务。还需要 Edge Router Policy 和 Service Edge Router Policy,让客户端、承载身份与服务有可用的在线 Router。Quickstart 通常会创建用于入门的默认 Router 策略,可以先检查现有配置。OpenZiti 策略概览说明了这些策略如何配合。
检查策略并连接 SSH。
在 Ubuntu 上使用 Policy Advisor:
bashziti edge policy-advisor services ubuntu-ssh windows-laptop -q
ziti edge policy-advisor services ubuntu-ssh "$SSH_HOST_ID" -q
客户端应显示 Dial 授权,承载身份应显示 Bind 授权,并且各自与服务有共同的在线 Router。这个检查用于确认策略关系;SSH 服务本身是否可用还需要实际连接验证。
在 Windows 上确认 windows-laptop 已连接 Ziti Desktop Edge,然后执行:
powershellssh.exe 用户名@ubuntu-ssh.ziti
将 用户名 换成 Ubuntu 上允许登录的账号。首次连接时,SSH 可能提示确认服务器主机密钥。可以通过已有的可信 Ubuntu 管理会话查看 ED25519 指纹:
bashsudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
确认客户端显示的指纹一致后再继续。Ziti 授权通过后,SSH 仍会进行自己的账号和密钥认证。
前几篇配置的 Posture Check 关联在 local-web-dial 上,不会自动应用到新的 ubuntu-ssh-dial 策略。如果希望 SSH 也要求 MFA、Windows 域或进程检查,需要在 ZAC 中编辑 ubuntu-ssh-dial,加入所需的 Posture Check 属性。
创建 Ziti 服务也不会自动关闭原来开放的公网 SSH 端口。如果准备收回公网端口,先验证 Ziti SSH 和备用管理通道均可用,再调整云安全组或防火墙;同时保留 Controller 和 Router 所需端口。
如果连接失败,可以按顺序检查:Windows 身份是否在线且获得 Dial 权限、Router 身份是否获得 Bind 权限、双方是否有共同在线 Router,以及 Router 能否访问 127.0.0.1:22。如果 SSH 已返回 Permission denied,则继续检查 Ubuntu 用户名和 SSH 登录凭据。