Skip to content

iOS上用 neoserver:// scheme 链接一键打开终端

一条 neoserver:// 链接,点一下,NeoServer 自动唤醒、连上服务器、把终端开到你想要的位置—— 可能是某台机器、某个 tmux 会话、或某个目录。

7 分钟阅读

一条 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, 不如做成一个图标:

  1. App 里复制这台服务器的链接,再手动补上 &tmuxName=main;
  2. 打开 iOS「快捷指令」→ 新建 → 加「URL」动作,粘贴这条链接;
  3. 加「打开 URL」动作;
  4. 点分享 → 添加到主屏幕,起名「连生产」,选个图标。

以后桌面点这个图标,NeoServer 自动连上并进到 main 会话,全程零操作。

🎙️ 场景 2:用语音连

把上面的快捷指令接入 Siri,设一句「嘿 Siri,连生产」。说完手机自动连。

🤝 场景 3:把一个会话丢给同事

  1. 终端 · 会话列表 → 长按这个会话 → Copy Scheme Link;
  2. 发给同事(AirDrop / 微信都行);
  3. 他用 NeoServer 点开 → 自动 attach 到同一个 tmux 会话。

(前提:他那台 iPhone 上 NeoServer 的服务器库也要能连上同一台 host。)

🖥️ 场景 4:桌面图标一键跑命令

每天要看某台机器的容器状态,不想每次连上再手敲 docker ps:

  1. 复制服务器链接,手动补上 &command=docker%20ps;
  2. 按场景 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 免费下载