安全地使用 SSH 进行持续部署

在 GitHub Actions 等 CI/CD (持续集成/持续部署) 服务中,如果需要部署到远程服务器,我们通常会使用 SSH 连接。然而如果不加以限制,存储在 CI/CD 服务提供商中的凭证一旦泄露将对服务器造成巨大的安全风险。遵循最小权限原则,本文将利用 SSHD 为用户强制指定命令的功能,限制 CI/CD (以 GitHub Actions 为例) 所使用的用户只能执行特定的命令,从而实现安全的持续部署。

阅读更多

在 2023 年续订 GitHub 和 Azure 学生包

本文撰写于 2023 年 12 月 19 日,文章中的内容具有时效性,当你看到这篇文章时它可能已经过时。

两年前我申请了 GitHub 和 Azure 的学生包。过去的两年它们增添了很多内容,尤其是大受欢迎的 GitHub Copilot,由此也导致了更多非学生的羊毛党的涌入,微软不得不提高了风控水平,造成真正的学生的申请流程变得更加复杂。在 11 月底,我的 GitHub 和 Azure 学生包都将到期,因此我在 11 月进行了续订。我在这篇文章谈谈我在 2023 年续订 GitHub 和 Azure 学生包的经历。

阅读更多

使用 Deploy key 将私有 GitHub 仓库克隆到境内服务器

由于某些原因,我们往往无法直接在境内服务器上克隆 GitHub 上的仓库。对于公开仓库,我们可以通过公益或自建的反向代理来解决这个问题。但是当我们希望将仓库保持私有时,我们遇到了以下几个问题:

  1. 我们不希望将自己的凭据上传到服务器,因此需要使用权限较低的 personal access token
  2. 很多反向代理方式,尤其是公益的,并不支持传递 personal access token
  3. 在服务器上使用 personal access token 配合反向代理进行 HTTPS clone 将会向反向代理服务器暴露该 token

本文将通过转发 GitHub 的 SSH 端口并使用 Deploy key 来解决这些问题。使用该方案,服务器上的凭据将仅限于读取指定仓库,且中间人无法获得你的凭据。

阅读更多
GitHub Copilot 使用感受

GitHub Copilot 使用感受

本文撰写于 2022 年 5 月 4 日,文章中的内容具有时效性,当你看到这篇文章时它可能已经过时。

GitHub Copilot 是 GitHub 和 OpenAI 开发的人工智能工具,用户在使用 VSCode 或其他一些 IDE 时可以通过 GitHub Copilot 进行自动补全代码。

在一个月前,我申请了 GitHub Copilot 的 technical preview,并在两天后收到了申请成功的邮件。这篇文章谈谈申请过程和近一个月我使用 GitHub Copilot 的感受。

阅读更多