把 iPad 当“第二块开发屏”这件事,我前前后后折腾了至少半年,踩过的坑能写满一个小本子。最开始我只是想躺在床上改个 Bug,不想爬起来开电脑;后来发现只要把远程连接链路搭稳,iPad 配合一块键盘,能在一段时间内完全承担“写代码、改代码、跑测试、看日志”这类工作。今天这篇就专门聊聊怎么让 iPad 变身开发神器,远程连接 PC 撸代码,把家里那台主力电脑变成一台可以随身带走的“云端开发机”。
先说结论:这条路完全可行,但前提是你得把网络、账号权限、工具选型这三件事理清楚。很多人失败在“拿到 iPad 不知道怎么连”,或者连上了却卡到怀疑人生。这篇文章我会把 PC 端和 iPad 端的配置思路、工具选择、常见报错都拆开讲,尽量让你照着操作就能跑通。适合的对象也很明确:有 iPad,家里/办公室有一台 Windows 或 Linux PC,想用 iPad 偶尔写代码、做运维、改文档的人。
1. 想清楚“远程撸代码”到底需要什么
1.1 远程开发解决的三个真实痛点
第一个痛点是“人不坐在电脑前,但代码在电脑上”。我们大部分人的主力开发环境都在 PC 或服务器上,各种依赖、数据库、测试环境、历史分支都在那边。以前想随手看个问题,只能选择跑回工位。iPad 做远程连接后,等于把电脑的“操作权”通过屏幕搬到了手里。
第二个痛点是“iPad 本地写代码体验太别扭”。虽然 iPad 有很好的编辑器、有的还能跑 Python 解释器,但真遇到大型项目,本地存储、内存、编译环境完全不是一回事。远程连接 PC 后,CPU、内存、硬盘空间都还是电脑的,iPad 只负责显示和输入,这是我选择它而不是在 iPad 上装 IDE 的最主要原因。
第三个痛点是“环境一致性”。你在 PC 上搭好的环境,通过远程连接访问,操作的就是同一个环境,不会出现本地环境和服务器环境俩样导致“在我电脑上好的”这种问题。这一点在调试线上 Bug 或折腾开源项目时特别明显,远程连接直接消除了环境差异。
1.2 三条典型路线:SSH 终端、远程桌面、浏览器里的 Code Server
我把市面上能用的方案归成了三类,你可以根据自己需求选:
- SSH 终端方案:iPad 装一个终端工具(比如 Termius),通过 SSH 连到 PC 的命令行。适合用 Vim、Neovim、Tmux、htop、git 这类命令行工具主要完成日常工作。也能在终端里跑构建命令、看日志,带宽占用小,不卡。
- 远程桌面方案:iPad 上装 Microsoft Remote Desktop 或 Jump Desktop,直接看到 Windows/Linux 桌面,跑完整 VS Code、浏览器、GUI 程序。适合需要完整 IDE 体验、调试界面化工具的人。
- Code Server 方案:在 PC 上装 code-server,把 VS Code 的 Web 版跑起来,iPad 用浏览器访问,界面接近原生 VS Code,文件夹、插件、终端都有。适合想在 Pad 上获得“图形化编辑器”但不那么依赖 Windows 桌面的人。
三条路各有各的适用场景。我自己的日常主力是 SSH 终端加 code-server,偶尔需要看 GUI 或调试浏览器的时候才切到远程桌面。如果你刚开始折腾,也不用全都上,先想明白自己主要做什么:是终端下能搞定,还是非开 VS Code 不可?想明白了再动手。
2. 先把 PC 端这半边调明白
远程连接这件事,大头其实在 PC 端配置。很多朋友拿着 iPad 折腾半天连不上,最后发现是 Windows 根本没开 SSH 服务,或者防火墙按住了端口。所以别急着在 iPad 上装软件,先把 PC 这扇门打开。
2.1 Windows 开启 OpenSSH Server
Windows 10/11 其实自带 OpenSSH Server,只是默认没装。打开“设置 -> 系统 -> 可选功能”,看看能不能找到 OpenSSH 服务器。找不到就点“添加可选功能”去搜索,装上。
我更习惯用 PowerShell 命令行来做这件事,因为开完可以直接看到状态:
# 查看是否已支持 OpenSSH.Server Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*' # 安装 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 启动服务并设为自动启动 Set-Service -Name sshd -StartupType Automatic Start-Service sshd # 确认监听端口 netstat -an | findstr :22装完之后默认的登录账号是 Windows 当前用户,密码就是你登录电脑的密码。如果你平时用的是微软账户,密码可能有点特殊——大多数人在这里会踩坑,后面我单独说。
防火墙方面,安装 OpenSSH Server 时系统一般会自动加规则,但为了保险,可以手动确认一下:控制面板 -> Windows Defender 防火墙 -> 高级设置,找到“OpenSSH Server”相关入站规则,确保已启用。如果还是连不上,直接临时加一条放行 22 端口的规则也能应急。
2.2 Linux/macOS 侧快速确认
如果你的 PC 是 Linux,DeFi 系的发行版基本一条命令就能搞定。以 Ubuntu 为例:
sudo apt update sudo apt install openssh-server -y sudo systemctl enable --now ssh sudo systemctl status ssh看到active (running)就说明 SSH 服务起来了。再用ip addr看看当前 IP,建议记下来,后面 iPad 要填的就是它。
macOS 也有远程登录功能,在“系统设置 -> 通用 -> 共享 -> 远程登录”里打开即可。但如果你和我一样主力是 Windows PC,下面的实操就按 Windows 来展开。
2.3 固定内网 IP 与路由器端口转发
这一步是很多新手最容易忽略的:PC 的内网 IP 如果是 DHCP 动态分配的,今天连得上,明天重启路由器可能就变了。建议先到路由器后台,把 PC 的 IP 绑定成固定地址,或者在 PC 的网络设置里手动指定一个静态 IP。我一般用 DHCP 保留,因为这样更省事,路由器和 PC 两边都不用反复改。
固定好 IP 后,先测试局域网内的连接。用 iPad 的 Safari 或其他工具访问一下 PC 的 IP,或者直接用后面要讲的终端工具尝试连接。只有局域网通了,再考虑外部访问。
外网访问是另一个话题。如果你家里的宽带拥有公网 IP,可以在路由器上做端口映射:把外网的某个端口映射到 PC 的 22 或 3389 端口。没有公网 IP 的,通常会用内网组网或内网穿透类工具,比如 frp、ZeroTier 这类方案。我这里不刻意推荐某个工具,因为不仅各家网络环境差异大,而且还要考虑安全风险。只给一个原则:任何暴露到公网的服务,端口不要用默认端口,账号一定要用强密码,并优先使用密钥登录。
注意:公网暴露是有真实风险的,别把没有密保的 SSH 直接挂到公网,否则你看到的将是每分钟好几十次暴力破解尝试。我自己的习惯是只暴露一个高端口,并且只允许密钥登录。
3. iPad 端的工具怎么选
iPad 端的工具链选得好不好,几乎决定了你愿不愿意长期用这个方案。市面上的远程工具不少,但真正用下来顺手的主要就那几样。下面按三种方案给你拆开说。
3.1 Termius:日常 SSH 主力
Termius 是我最常用的一款 iPad 终端工具,界面干净、支持密码和密钥、能存多台主机。最方便的是一台设备配置好了,其他设备登录同一个 Termius 账号可以同步所有连接配置。
新建连接的步骤一点都不复杂:
- 打开 Termius,点击右下角加号创建新主机。
- Address 填 PC 的内网 IP,端口默认 22。
- Username 填 Windows 用户名或 Linux 用户名。
- 密码填对应账号密码;如果有 SSH 私钥,可以在 Key 里添加上去。
- 保存后点击连接。
Termius 还内置了几种常用快捷键布局,对 iPad 外接键盘比较友好。比如特殊键esc、ctrl、tab在屏幕上都能点,算是省了不少事。它还支持 SFTP,文件传小东西很方便,不用每次都在云端转一道。
3.2 Microsoft Remote Desktop / Jump Desktop:需要完整桌面时
当我要打开完整的 VS Code 窗口、调试浏览器页面、或者操作 PC 上的某个 GUI 程序时,终端方案就顶不住了。这时远程桌面工具是更合理的选项。
iPad 上我首选 Microsoft Remote Desktop(微软官方出品,免费)。前提是 Windows 端已开启“远程桌面”功能:设置 -> 系统 -> 远程桌面 -> 启用远程桌面。然后 iPad 上新建连接,填 PC 的 IP 和账号密码,即可连上。
用 Remote Desktop 连上 Windows 后,看到的画面就是 Windows 桌面。屏幕方向、分辨率都可以在客户端里调整,外接键盘的快捷键大部分也能透传。这套方案的优势是“所见即所得”,缺点是对网络带宽要求更高,特别是滚动大量代码或看动画时,延迟会明显。
Jump Desktop 则是更轻量的替代品,连接流畅度和触控手感相对松弛,但很多功能需要内购。对我来说,微软官方客户端已经够用,不着急买额外的钱。
3.3 用 code-server 让浏览器也能写代码
这里要重点说说 code-server,因为它是很多“iPad + 键盘”用户的最优解。code-server 是 VS Code 的服务器版,本质上把 VS Code 的 Web 界面通过端口暴露出来。你在 PC 上装好,启动后,iPad 用 Safari 打开http://PC的IP:8080就能看到一个和 VS Code 几乎一样的界面。
装 code-server 很简单,官方提供了安装脚本,也可以去 GitHub 下载二进制包。以 Linux 服务器为例:
curl -fsSL https://code-server.dev/install.sh | sh # 或直接下载二进制 # 然后启动,默认端口 8080 code-server --bind-addr 0.0.0.0:8080Windows 上也能跑,装完用命令行启动,然后用浏览器访问。它也有密码认证,默认配置文件会生成一个密码,启动输出里能看到。如果你只是局域网内用,这个基础防护还够;如果要公网访问,强烈建议套上 HTTPS 和额外反向代理。
我在 iPad 上更常用 code-server 而不是远程桌面,因为它的 UI 是为键盘+鼠标设计的,字体渲染清楚,终端集成在编辑器下方,写代码和跑命令都不用切换 App。配合 iPad 的分屏功能,左边是浏览器里的 VS Code,右边是 Termius 终端,基本可以做到“一心二用”。
4. 从 iPad 连 PC 的完整实操流程
理论说了一堆,走到这一步才是真正动手的时候。这里我把整个流程串一遍,分为最基础的局域网连接和稍微进阶的跨网络访问,也会分享一些我日常使用的小技巧。
4.1 局域网内最简连接(SSH 路线)
假设你已经按第 2 步在 PC 上装好 OpenSSH 服务,且 iPad 和 PC 在同一个 WiFi 下,流程如下:
- 在 PC 上打开命令行,输入
ipconfig,找到当前局域网 IPv4 地址,比如192.168.1.100。 - 在 iPad 上打开 Termius,新建主机,Address 填
192.168.1.100,端口填22,输入用户名和密码。 - 连接成功后,你就获得了 PC 的命令行终端。试一下
ls、cd、git status,确认能正常响应。 - 如果要用 code-server,就在 PC 上把 code-server 跑起来,然后用 iPad 的浏览器访问
http://192.168.1.100:8080。
这一步看起来简单,但实际上很多人会卡在用户名上。Windows 上的 OpenSSH 登录名不一定是你屏幕右下角显示的那个名字,推荐在命令行里用whoami查看当前用户全名,然后拿那个全名去连接。要是带了微软账户邮箱,有时候用户名要写整个邮箱前缀,这点特别容易出问题。
4.2 远程桌面连接的详细步骤
如果你打算用远程桌面方案,Windows 端需要额外开启远程桌面功能:
- “设置 -> 系统 -> 远程桌面”,打开“启用远程桌面”开关。
- 确认当前用户有远程访问权限,可以在“选择可远程访问的用户”里维护。
- iPad 上安装 Microsoft Remote Desktop,点击“Add PC”,填入 PC 的 IP。
- 保存后连接,输入 Windows 账号和密码。
连上之后,我习惯在客户端设置中把“显示分辨率”调成和 iPad 匹配的比例,减少缩放带来的模糊感。还有就是在外接键盘上尝试一下Win + D(显示桌面)和Alt + Tab(切换窗口)能不能透传,不行的话就在屏幕工具栏上点虚拟键,否则在 Windows 里切应用会很累。
4.3 跨网络、无公网 IP 时怎么处理
局域网通了之后,自然的下一步就是“人不在家,也想连”。这就涉及跨网络的访问方式。最理想的情况是你的宽带运营商给了一个公网 IP,那你在路由器上做端口转发就能搞定。流程大致是:
- 固定 PC 的内网 IP;
- 在路由器后台找到“端口映射”或“虚拟服务器”;
- 添加一条规则:外部端口选一个不常用的,比如
22222,内部 IP 填 PC 的内网 IP,内部端口填22; - 局域网外访问时,用
公网IP:22222来连接。
没有公网 IP 也很正常,运营商给的往往是内网地址。这种情况我会用组网工具或内网穿透把多个设备拉进一个虚拟局域网,iPad 上直接填虚拟局域网里 PC 的 IP 就行。好处是客户端配置和局域网几乎一样,坏处是引入额外节点,速度和稳定性取决于中继。实际操作中,我建议先测一下“组网后内网 ping 延迟”,延迟能保持在 30ms 以内,体验基本过关;如果延迟上百毫秒,远程桌面就会明显感觉不跟手。
需要提醒的是,跨网络连接的安全配置要比局域网更严格。密钥登录是底线,有条件再上两步验证,并且不要用默认端口,日志里被扫描的几率会低一些。我很少把 SSH 直接暴露在公网,更多是用组网工具,因为少一个对外开放端口就少一份风险。
4.4 在 iPad 上玩转编辑和调试的小技巧
工具连上只是开始,真正舒服地写代码,还得适配 iPad 的交互习惯。几个我实测下来很受用的小技巧:
- 外接键盘是必需品。我用的是带触控板的键盘壳,虽然比不上笔记本键盘,但写长代码、按快捷键都比屏幕虚拟键盘高效太多。快捷键里最常用的是
Tab、Ctrl + P(快速打开文件)、Esc。 - 在 Termius 里,如果你发现方向键和
Esc不好按,可以开启屏幕上的功能键区,或者用Ctrl + [代替Esc。 - code-server 里可以把字体调大,因为 iPad 屏幕在那放着,太小看久了眼睛疼。
- 分屏很好用。把 Safari(code-server)和 Termius 放一起,左侧写代码,右侧跑命令,或者左侧看文档,右侧跑日志。
- 如果你有一支 Apple Pencil,在远程桌面上操作界面很方便,但在终端和代码编辑里用处不大,偶尔点选文件还是比纯手指精准。
这些细节虽然琐碎,但它们是决定体验的重要因素。刚上手时觉得麻烦,习惯之后反而觉得 iPad 比笔记本轻便太多,带去开会或咖啡馆都能随时打开远程开发环境。
5. 常见问题与排查技巧实录
远程连接看着简单,实际用起来问题五花八门。这里把我在实操里遇到过的、以及在社群里看到的高频故障整理出来,方便你对照排查。
5.1 “远程计算机拒绝连接”类报错怎么破
这类报错是出现频率最高的,症状是 iPad 一端连接时提示“远程计算机拒绝连接”或“找不到主机”。我这里列一个速查表:
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| ping 不通 PC 的 IP | 不在同一网段,或 PC 防火墙拦截 | 确保 iPad 和 PC 在同一路由器下;检查 PC 网络类型是否为“专用网络” |
| 22 端口连接被拒 | OpenSSH Server 未启动 | 在 PC 执行Start-Service sshd,并查看服务状态 |
| 3389 端口连不上 | Windows 远程桌面未开启 | 设置中启用远程桌面,并确认防火墙规则已添加 |
| 用户名/密码错 | Windows 账号名不完整 | 用whoami查询准确用户名 |
| 连接后黑屏/闪退 | 远程桌面客户端版本过老 | 更新 Remote Desktop 到最新版,关掉“硬件加速”重试 |
| 外网连不上内网 IP | 端口映射未生效或运营商无公网 IP | 检查路由器映射规则,或者改用组网工具 |
遇到连接问题时,我习惯先在 PC 本地看一下服务状态和端口监听:
netstat -an | findstr :22如果 22 端口没监听,那问题基本出在服务没启动;如果监听着但连不上,就怀疑防火墙。熟练之后,排查顺序就是:先本地服务,再防火墙,再 IP 连通性,最后才是认证。
5.2 延迟高、画面卡顿、键入不跟手的优化思路
远程开发最影响幸福感的不是功能缺失,而是延迟。特别是用远程桌面时,如果网络条件不好,就会感觉鼠标在“飘”,键盘按下到屏幕出现字符有明显的间隔。优化思路大致有几条:
- 优先走有线网络:PC 如果接 Wi-Fi,建议换成有线,路由器放近一点,iPad 用 5GHz 频段别连 2.4GHz。
- 用 SSH 终端方案代替远程桌面:终端只传文字和少量控制序列,对带宽要求极低,即使网络抖一点也不会太难受。
- 远程桌面里降低分辨率和画质:例如在 RD Client 里选择低分辨率,关闭窗口动画,某些客户端还有“优化网络”模式。
- 如果只是终端卡,可以试试 Mosh 这类工具。Mosh 在弱网下比 SSH 稳很多,掉线也能回放本地输入,我用下来明显比裸 SSH 平滑。
- 重启一下路由器有时候真有用,遇到诡异卡顿我是认真的。
总体来说,如果你主要写代码,我会更推荐 code-server 或 SSH 终端方案,因为它们的延迟敏感度远低于远程桌面。
5.3 剪贴板、文件传输与代码同步的那些细节
远程连接之后,你会很快发现“剪贴板不同步”是个大问题。比如你在 iPad 上复制了一段代码,想粘到远程终端里,发现啥也没有。各工具的解决方案不太一样:
- Termius 的 SFTP 能满足小文件传输,但剪贴板同步需要版本支持。部分场景用它的“Command”面板粘贴文本更方便。
- Microsoft Remote Desktop 支持剪贴板重定向,但需要在连接设置里打开“剪贴板”选项;Windows 里复制,iPad 里粘贴,或者反过来。
- code-server 毕竟是浏览器界面,iPad 上复制粘贴更接近网页习惯,
Cmd + C和Cmd + V一般好用。 - 代码同步这件事,重点还是交给 Git。远程开发时,你在 iPad 上改完代码,一样可以
git add、git commit、git push,回到 PC 后直接git pull,完全不用手动传输文件。
我自己的习惯是:日常代码版本管理严格走 Git,偶尔传个配置文件或图片走 SFTP。剪贴板方面则不强求同一个 App 跟手,习惯了反而觉得问题不大。
6. 用下来的一些真实体会
这套方案我用了挺长一段时间,整体感受就是“上限很高,但下限也很低”。上限高是说,只要配置到位,几乎可以把 iPad 变成一个轻量开发工作站;下限低则意味着网络、工具链、账号权限任何一环没弄好,都可能导致你连一次就劝退。
我个人的组合拳是:Termius 作为稳定的 SSH 入口,code-server 作为写代码的主界面,远程桌面只做兜底。这样一来,平时的代码编辑、日志查看、服务重启都在终端和浏览器里完成,远程桌面只在需要 GUI 的时候才打开。长时间的电池续航和轻便是实打实的优势,但如果你需要频繁操作大型 IDE 插件、跑本地虚拟机、做视频剪辑,那 iPad 终究替代不了 PC。远程连接更适合的是“轻量维护 + 偶尔开发”,而不是“重度开发者的唯一生产工具”。
最后再分享一个很实用的经验:刚开始不要把所有方案一股脑配齐,先搞通一条最简链路,比如在局域网内用 Termius 连上 PC 的 SSH,然后在这个基础上慢慢加端口转发、加 code-server、加组网工具。亲身走完一遍之后,你才会对“远程连接”的每一步有感知,以后换网络、换工具也就能举一反三,而不会变成只能抄配置的“脚本小哥”。