# 自动转发 iPhone 收到的验证码到 Mac（Shortcuts）

> 本文公开全文。

原文：https://utgd.net/article/20185

世界上最遥远的距离，可能是手机屏幕和电脑之间的距离：有时候，你得手机扫码登录，不能使用帐号密码；另一些时候，你一边盯着手机屏幕，一边在电脑上输入验证码。

手机与电脑之间的龃龉太多，本文挑其中一个下手，试图解决转发手机验证码到电脑的问题。已有不少自动转发手机验证码到电脑的方法，可一旦把场景缩小到 iPhone 和 Mac，剩下的方案就寥寥无几。官方答案是开启 iMessage 消息同步，但我并不使用这个服务；第三方的野路子，往往要使用来路不明的软件，显然和验证码的敏感特征不符。这篇文章里，我尝试使用 Shortcuts 自动转发验证码给电脑，在实现自动操作的同时，只使用原生软件，尽可能确保安全。

自动转发验证码短信本身是一个历史比较久的需求，所以我就开门见山，直接分析如何实现，如果对于这一需求感到莫名其妙，那也可以看一下文章后半段的“为什么”部分。

## 如何实现自动转发

用 Shortcuts 自动转发二维码的基本思路是：（1）在手机上准备个人自动化，（2）在电脑上打开 SSH 端口，以便接收快捷指令发来的通知；只要验证码短信一来，就会自动发送到电脑上。这个方法最大的局限在于需要通过 SSH 传输数据，基本意味着电脑和手机需要在同一个 Wi\-Fi 网络中，好在转发验证码本来就对安全性有要求，如果设备不在一个网络中、甚至不在身边，我绝对不希望数据传过去。

首先需要在苹果电脑上配置 SSH 传输。这是一种“遥控”电脑的手段，只要知道帐号和密码，基本就能执行任何操作，所以配置需谨慎。

- 在分享设置中，开启远程登录（Remote Login）；

- 记住右图“2”标记处的 SSH 登录地址，为保护隐私，我已将图中信息打码；

- 保持其他配置不动，因为系统默认会给一个最低权限，既不允许访问整个磁盘上的文件，也不允许您以外的帐号登录。

使用 SSH，是因为在 iPhone 向 Mac 发送通知的方法中，这一途径可能是最安全的，不需要经过第三方软件，数据也不会经过互联网，属于局域网内直接交流。未来如果有更合适的方法，则完全可以替换这一步骤。

然后，准备个人自动化，在收到短信后就向电脑发送消息。个人自动化由三部分组成，第一部分是一个触发机制，收到包含“验证码”三个字的短信就启动。本文只想转发验证码，不关心其他类型的短信，以免无关信息打搅工作。第二步则是从短信中提取验证码数字，其实这一步并非必要，你也可以把整条短信原模原样传送给电脑。最后一步就是通过 SSH 模块给电脑发送一条通知，通知内容为刚刚提取的验证码。这一步细节较多：

- 用于发送通知的命令已经填写好，你也可以自行更改 验证码：match 部分，把消息改为其他文字；

- Host 为主机名，填写配置 SSH 时记下的登录地址；

- User 是电脑的登录用户名，注意是电脑而不是手机或 iCloud；

- Password 也是电脑的登录密码。

考虑到个人自动化无法直接分享，我把其中的代码粘贴在下方，便于大家复制使用：

```
osascript -e "display notification \"$(echo 验证码：【match 变量请自行设定】)\""
```

全部配置完成后，先试着运行一下，第一次尝试连接电脑时会有安全提示，同意即可，随后电脑应该就可以正常收到消息。为了让整个过程更加无痕，建议关掉运行前询问的选项，但是建议保留通知，这样就知道 Shortcuts 什么时候运行过，有个记录。

## 为什么要自动转发

消息转发的功能，历史悠久，大家也有各自的理由。早在功能机时代就已有相关的电信服务；在 iPhone 尚不支持双卡的时候，就有人在折腾消息转发，把专门用于接收验证码的手机卡插在安卓手机上，利用上面各种神奇的软件，自动把短信验证码转发给 iPhone，只要随身带一台手机就能接受两台甚至多台手机的消息。类似的，还有用微信接收 QQ 消息，这样就可以少装一个软件，或者在一个地方查看各路消息。

而在转发手机验证码到电脑这个场景下，主要的目的可能是保持专注。用电脑时基本是在工作，这时候如果为了看验证码而拿起手机，很有可能刷出一堆与工作无关的通知，然后忍不住点进去，时间就此在不知不觉中被偷走。有些对自己要求严格的人，甚至会在工作时间把手机锁死或者打开一个种树软件，不让自己碰手机。但查看验证码又是一个非常正当的需求，明显不是为了玩手机——那么就要用某种方法，把验证码专门挑出来发到电脑上。

---

[前往标准阅读页](https://utgd.net/article/20185?audience=web)
