linux 下用 acme.sh 搞定 Nginx 免费 SSL 证书自动续期(下) 对于acme.sh命令安装详解

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)。
    • 这个邮箱非常重要,用于接收证书到期提醒、密钥丢失找回等紧急通知。

🚀 这条命令在后台默默做了什么?

当你回车执行这条命令后,脚本会在几秒钟内自动完成以下三件大事:

  1. 克隆代码 :它会把 acme.sh 的源码下载到你的家目录下的隐藏文件夹 ~/.acme.sh/ 中。
  2. 创建别名 :它会自动修改你的 Shell 配置文件(如 ~/.bashrc),添加一行 alias acme.sh=~/.acme.sh/acme.sh。这意味着你以后在任何目录下,直接输入 acme.sh 就能运行它,无需输入长长的路径。
  3. 安装定时任务 :它会自动向系统的 crontab 中添加一条定时任务,用于每天检查证书是否需要续期。

💡 常见问题与替代方案

Q: 如果我的服务器没有 curl 怎么办?

A: 你可以使用 wget 替代,效果是一样的:

复制代码
wget -O - https://get.acme.sh | sh -s email=my@example.com

Q: 这种"下载即执行"的方式安全吗?

A: 对于 acme.sh 这种开源且广泛使用的项目,通常是安全的。但如果你比较谨慎,或者处于内网环境,可以使用离线安装法

  1. 先下载源码:bash

    复制代码
    git clone https://github.com/acmesh-official/acme.sh.git
  2. 进入目录并安装:bash

    复制代码
    cd acme.sh
    ./acme.sh --install -m my@example.com

这条命令就是利用 Linux 的管道特性,实现"下载 + 安装 + 配置"一步到位,是目前最快捷的部署方式。

-m 和 email 有区别吗

acme.sh 的语境下,-memail 实际上指的是同一个东西,没有本质区别

简单来说:-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 你的邮箱 ...
相关推荐
茉莉玫瑰花茶4 小时前
工作流的常见模式 [ 1 ]
java·服务器·前端
米高梅狮子4 小时前
第2章 docker容器
运维·docker·云原生·容器·架构·kubernetes·自动化
kidwjb5 小时前
信号量在进程中的使用
linux·进程间通信
闵孚龙5 小时前
Claude Code Ultraplan 远程多代理规划全解析:AI Agent、CCR远程容器、异步规划、状态机、计划传送与企业级自动化治理
运维·人工智能·自动化
南京码讯光电技术有限公司6 小时前
工业无线AP选型指南:从WiFi 5到WiFi 6+5G CPE,如何构建全覆盖、零漫游、高可靠的智能工厂网络?
服务器·网络·5g
sulikey6 小时前
个人Linux操作系统学习笔记2 - gcc与库的理解
linux·笔记·学习·操作系统·gcc·
二宝哥7 小时前
Linux虚拟机网络配置
linux·运维·服务器
卧室小白7 小时前
docker网络与服务编排与集群
运维·docker·容器
陳10307 小时前
Linux:进程间通信 和 简单进程池
linux·运维·服务器
数字化顾问7 小时前
(122页PPT)数字化架构的演进和治理(附下载方式)
java·运维·架构