一条 neoserver:// 链接,点一下,NeoServer 自动唤醒、连上服务器、把终端开到你想要的位置——
可能是某台机器、某个 tmux 会话、或某个目录。
把它存进 Safari 收藏、备忘录、桌面图标、Siri 快捷指令,或 AirDrop 给同事,都能用。
一、终端链接怎么写
所有终端链接长这样:
neoserver://terminal?host=<服务器>&port=<端口>&user=<用户>&name=<终端备注>&tmuxName=<tmux会话>&zellijName=<zellij会话>&workdir=<目录>&command=<命令>
| 参数 | 必填 | 填什么 |
|---|---|---|
host | ✅ | 服务器 IP 或域名。必填,留空链接作废。 |
port | ❌ | SSH 端口,不写默认 22。有效范围 1–65535,填非法值链接作废。 |
user | ❌ | 登录用户名,不写默认 root。 |
name | ❌ | 这次终端的备注名(显示用,不参与服务器匹配)。 |
tmuxName | ❌ | 连上后自动进这个 tmux 会话。 |
zellijName | ❌ | 连上后自动进这个 zellij 会话。 |
workdir | ❌ | 连上后自动 cd 到这个 远程目录。 |
command | ❌ | 连上后自动执行一条命令(带回车)。多行用 %0A 分隔。 |
⚠️ 优先级:
tmuxName>zellijName>command>workdir。
tmuxName/zellijName与command不组合:带了会话名就只 attach 该会话,command会被忽略(attach 会占住终端输入,命令塞不进去)。command可以和workdir一起用:先cd进目录,再执行命令。tmuxName/zellijName/workdir三者仍互斥。name是纯显示名,跟谁都能共存,不影响上面的逻辑。
照着抄,改成你的就行:
# 最简单:只给 host
neoserver://terminal?host=1.2.3.4
# 指定端口和用户
neoserver://terminal?host=1.2.3.4&port=2222&user=deploy
# 连上直接进 main 这个 tmux 会话
neoserver://terminal?host=1.2.3.4&user=root&tmuxName=main
# 连上直接进 dev 这个 zellij 会话
neoserver://terminal?host=1.2.3.4&user=root&zellijName=dev
# 连上自动 cd 到日志目录
neoserver://terminal?host=1.2.3.4&user=root&workdir=/var/log/nginx
# 给这次终端起个备注名(列表里显示用,不参与匹配)
neoserver://terminal?host=1.2.3.4&user=root&name=生产机
# 连上自动执行 ls -la(%20 = 空格)
neoserver://terminal?host=1.2.3.4&user=root&command=ls%20-la
# 先 cd 进 /var/log,再执行 tail -f syslog
neoserver://terminal?host=1.2.3.4&user=root&workdir=/var/log&command=tail%20-f%20syslog
# 多行命令:先 cd /tmp 再 pwd(%0A = 换行)
neoserver://terminal?host=1.2.3.4&user=root&command=cd%20%2Ftmp%0Apwd
二、连上之后,终端会停在哪
这是终端链接最有用的部分——填不同的参数,连上后终端开到的地方不一样:
| 你填的参数 | 连上后终端的样子 |
|---|---|
只填 host(+可选 port/user) | 开一个普通终端,停在用户家目录 |
tmuxName=main | 自动 tmux attach 到 main 会话,回到你上次离开的画面 |
zellijName=dev | 自动进 dev 这个 zellij 会话 |
workdir=/var/log | 自动 cd 进 /var/log 目录 |
command=ls -la | 终端就绪后自动敲下并执行这条命令 |
workdir=/var/log&command=tail -f syslog | 先 cd 进 /var/log,再执行 tail -f syslog |
为什么要分这三种?
- tmux / zellij 会话:断网、关 App、换手机再连,会话还在,进程不丢。把一台服务器的 tmux 会话分享给同事,两个人能进同一个画面一起排查。
- 目录:你每次连上来都要
cd /opt/app/logs,不如让链接直接把你放过去。 - 命令:连上自动跑一条命令,比如拉日志、看状态、跑部署脚本。能和
workdir叠加(先进目录再跑)。
name不影响连上后的行为,只是给这次终端起个好认的名字,方便在列表里找。
三、在 App 里复制链接(不用手写)
手写链接容易写错。NeoServer 在三个地方能一键复制,复制完粘贴到任意地方即可。
1. 复制「这台服务器」的链接
服务器 tab · 服务器列表 → 在某台服务器上左滑 → Copy Scheme Link
复制出来是:
neoserver://terminal?host=...&port=...&user=...
2. 在终端 quick 模式里复制
终端 tab · 服务器列表(quick 模式)→ 长按某台服务器 → Copy Scheme Link
3. 复制「这个会话」的链接 ⭐ 最有用
终端 tab · 会话列表 → 长按某个会话 → Copy Scheme Link
这条链接会把「连到 X 服务器的 Y 会话」打包进去:
- 这个会话是 tmux → 自动带上
&tmuxName=... - 这个会话是 zellij → 自动带上
&zellijName=... - 普通会话 → 只有
host/port/user
复制成功会弹 Link Copied,链接已经在剪贴板。
✏️ 复制出来的链接只含
host/port/user(会话链接另带tmuxName或zellijName)。 想加name(备注)或command(自动执行命令)?手动拼到链接末尾即可,App 内暂时不生成这两个。
💡 把一个正在跑的 tmux 会话长按复制发给同事,他用 NeoServer 点开,直接 attach 到同一个会话——你们俩进入同一个终端画面。
四、怎么打开这条链接
neoserver:// 是 iOS 链接协议,任何能点链接的地方都能唤起 NeoServer:
- Safari:粘进地址栏回车,或存进收藏夹点。
- 备忘录 / 提醒事项:存一条,点一下直达。
- 快捷指令:「打开 URL」动作里填链接 → 可绑 Siri 语音、桌面图标、自动化。
- AirDrop:两台 iPhone 互发一条链接,对方点开即连。
- 邮件:把链接当文本发出去,对方复制到 Safari 打开。
📱 真机首次点击
neoserver://,iOS 会弹「在 NeoServer 中打开?」,确认即可,之后不再弹。
五、三个实战场景
🏠 场景 1:把「连生产 tmux」做成桌面图标
你每天都要连生产机的 main tmux 会话。与其每次开 App → 找服务器 → 连 → attach,
不如做成一个图标:
- App 里复制这台服务器的链接,再手动补上
&tmuxName=main; - 打开 iOS「快捷指令」→ 新建 → 加「URL」动作,粘贴这条链接;
- 加「打开 URL」动作;
- 点分享 → 添加到主屏幕,起名「连生产」,选个图标。
以后桌面点这个图标,NeoServer 自动连上并进到 main 会话,全程零操作。
🎙️ 场景 2:用语音连
把上面的快捷指令接入 Siri,设一句「嘿 Siri,连生产」。说完手机自动连。
🤝 场景 3:把一个会话丢给同事
- 终端 · 会话列表 → 长按这个会话 → Copy Scheme Link;
- 发给同事(AirDrop / 微信都行);
- 他用 NeoServer 点开 → 自动 attach 到同一个 tmux 会话。
(前提:他那台 iPhone 上 NeoServer 的服务器库也要能连上同一台 host。)
🖥️ 场景 4:桌面图标一键跑命令
每天要看某台机器的容器状态,不想每次连上再手敲 docker ps:
- 复制服务器链接,手动补上
&command=docker%20ps; - 按场景 1 做成桌面图标,起名「容器状态」。
以后点图标 → NeoServer 连上 → 自动执行 docker ps,结果直接刷在终端里。
六、终端链接常见问题
Q:点了链接,连到了错误的服务器?
A:NeoServer 按 host(+ port 若填了 + user 若填了)找服务器。如果你库里有两台
host 相同的服务器,会连第一个匹配的。填上 port 或 user 能精确区分。
Q:库里没这台服务器,点链接会怎样?
A:不会再弹「新建服务器」页面了。 现在直接用链接里的 host/port/user 现场开一个临时终端:
- 优先尝试无凭据认证(适合 Tailscale SSH 这种连接本身已验明身份的场景);
- 服务器若要求密码,再回落到 NeoServer 原有的密码 / keyboard-interactive 认证;
- 临时服务器不写进你的服务器库,关掉就释放;
- 但会在「最近会话」里留一条不含密码和私钥的快照,App 重启后点它还能重新连上。
原链接带的 name / tmuxName / zellijName / workdir / command 照常生效。
Q:链接里能直接带密码,省得每次填吗?
A:不能。 这是安全限制——链接里永远不带密码。就算你手动加 password=xxx 也会被忽略。
密码只走 App 内的钥匙串。
Q:name 是干嘛用的?
A:只是这次终端的备注名,方便你在列表里认出来。它不参与服务器匹配——两台 host 一样、name 不同的链接,连的还是同一台。
Q:command 会有安全风险吗?
A:有一点,得知道。command 连上后会自动执行(带回车)。任何 App、网页都能发一条 neoserver://...&command=...,所以别点来路不明的带 command 链接。iOS 首次会弹「在 NeoServer 中打开?」作为唯一拦截;需要密码的服务器它也带不上密码,只会回落到正常认证。
Q:带中文或空格的目录能填进 workdir 吗?
A:能。直接写,比如 workdir=/home/me/my logs。特殊字符 App 会自动处理。
最稳的办法是用 App 复制,而不是手写。
Q:点了没反应?
A:① 确认是 neoserver:// 开头;② 首次会弹「在 NeoServer 中打开」确认;③ 检查 host
没留空;④ App 没在前台也没关系,它会自动唤起。
Q:Android / Windows 能点开吗?
A:不能。neoserver:// 只有装了 NeoServer 的 iPhone / iPad 才认。
准备好试试了吗?
NeoServer · SSH, Mosh, Docker & SFTP client for iPhone, iPad and Mac
App Store 免费下载