curl https://get.acme.sh | sh -s email=my@example.com
这条命令是 acme.sh 官方推荐的一键安装脚本。它的设计哲学是"极简",通过管道将下载和执行合二为一。
我们可以把它拆解为三个部分来详细解读:
1. curl https://get.acme.sh ------ 下载脚本
curl:这是一个在 Linux 终端中常用的工具,用于向服务器传输数据。在这里,它的作用是访问https://get.acme.sh这个网址。https://get.acme.sh:这是acme.sh官方提供的安装脚本入口地址。当你访问它时,服务器不会返回网页,而是直接返回一段 Shell 脚本代码。
2. | ------ 管道符
- 这是 Linux 中最强大的符号之一。它的作用是把前一个命令的输出,直接变成后一个命令的输入。
- 在这里,它把
curl下载回来的那段脚本代码,直接"喂"给了后面的sh命令去执行,而不需要 你先把脚本下载到本地(比如curl -o install.sh),再手动运行。
3. sh -s email=my@example.com ------ 执行脚本并传参
sh:这是 Shell 解释器,用来运行脚本。-s:这个参数告诉sh,"我要运行的是从管道传过来的标准输入(stdin),而不是硬盘上的某个文件"。email=my@example.com:这是传给安装脚本的参数。- 安装脚本接收到这个参数后,会把它作为你的账户邮箱注册到 ACME 服务商(如 Let's Encrypt 或 ZeroSSL)。
- 这个邮箱非常重要,用于接收证书到期提醒、密钥丢失找回等紧急通知。
🚀 这条命令在后台默默做了什么?
当你回车执行这条命令后,脚本会在几秒钟内自动完成以下三件大事:
- 克隆代码 :它会把
acme.sh的源码下载到你的家目录下的隐藏文件夹~/.acme.sh/中。 - 创建别名 :它会自动修改你的 Shell 配置文件(如
~/.bashrc),添加一行alias acme.sh=~/.acme.sh/acme.sh。这意味着你以后在任何目录下,直接输入acme.sh就能运行它,无需输入长长的路径。 - 安装定时任务 :它会自动向系统的
crontab中添加一条定时任务,用于每天检查证书是否需要续期。
💡 常见问题与替代方案
Q: 如果我的服务器没有 curl 怎么办?
A: 你可以使用 wget 替代,效果是一样的:
wget -O - https://get.acme.sh | sh -s email=my@example.com
Q: 这种"下载即执行"的方式安全吗?
A: 对于 acme.sh 这种开源且广泛使用的项目,通常是安全的。但如果你比较谨慎,或者处于内网环境,可以使用离线安装法:
-
先下载源码:bash
git clone https://github.com/acmesh-official/acme.sh.git -
进入目录并安装:bash
cd acme.sh ./acme.sh --install -m my@example.com
这条命令就是利用 Linux 的管道特性,实现"下载 + 安装 + 配置"一步到位,是目前最快捷的部署方式。
-m 和 email 有区别吗
在 acme.sh 的语境下,-m 和 email 实际上指的是同一个东西,没有本质区别。
简单来说:-m 是 --email 的缩写。
刚才使用的安装命令中,写法稍微有点特殊,现在来拆解一下这背后的逻辑:
1. 标准参数中的 -m
在 acme.sh 的绝大多数命令(如申请证书、续期)中,官方文档定义的标准参数是:
-m:这是简写。--email:这是全称。
用法示例:
acme.sh --issue -m my@example.com -d example.com
在这种情况下,-m 和 --email 完全通用。
2. 安装脚本中的 email=...
在你使用的安装命令 curl ... | sh -s email=my@example.com 中:
- 这里的
email=my@example.com并不是acme.sh程序本身的参数格式,而是安装脚本(installer) 接收参数的格式。 - 官方安装脚本被设计为接受
key=value的形式。当你写email=my@example.com时,安装脚本会识别出email这个键,并将其值保存下来。 - 安装脚本在后台执行
--install操作时,会自动把这个邮箱赋值给-m或--email参数。
3. 总结与对比
| 场景 | 写法 | 含义 | 是否推荐 |
|---|---|---|---|
| 安装时 | sh -s email=xxx |
告诉安装脚本:"把这个邮箱记下来,安装时帮我填好"。 | ✅ 推荐 (官方安装写法) |
| 日常使用 | -m xxx |
告诉 acme.sh:"使用这个邮箱"。 | ✅ 推荐 (简写,方便) |
| 日常使用 | --email xxx |
告诉 acme.sh:"使用这个邮箱"。 | ✅ 推荐 (全称,清晰) |
| 日常使用 | email=xxx |
错误 。直接运行 acme.sh 命令时不支持这种赋值写法。 |
❌ 错误 |
💡 结论
你不需要纠结,它们就是一回事。
- 在安装 时,请遵循安装脚本的格式:
... | sh -s email=你的邮箱。 - 在以后使用 (如申请、续期)时,你可以习惯用
-m,因为它打字最少:acme.sh --issue -m 你的邮箱 ...。