📜  避免使用 github 凭据 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:28:29.259000             🧑  作者: Mango

避免使用 github 凭据 - Shell/Bash

当利用 Shell/Bash 脚本与 GitHub 交互时,我们要小心使用凭据,以避免在代码中暴露 GitHub 账户密码或访问令牌。本文将介绍一些避免使用 GitHub 凭据的方法。

嵌入凭据的风险

如果您的 Shell/Bash 脚本包含 GitHub 凭据,那么这些凭据可能会被复制或分发到其他地方。GitHub 令牌或密码可能会被包含在提交的 Git 仓库、环境变量、日志文件或 Bash 历史记录中。一旦凭据泄漏,攻击者可以使用这些凭据来修改您的 GitHub 仓库、发布虚假代码或访问您的源代码。

使用环境变量

为了避免直接在脚本中使用凭据,我们可以将凭据保存在环境变量中。这样做有两个好处:

  1. 减少凭据的泄漏风险;
  2. 便于在不同操作系统或设备上重复使用脚本。

以下示例演示了如何使用 Bash 脚本读取环境变量中的 GitHub 令牌,并将其传递给 curl 命令用于 GitHub API 请求:

#!/bin/bash

# 读取环境变量
GITHUB_TOKEN=$1

# 发送 API 请求
curl -H "Authorization: token $GITHUB_TOKEN" https://api.github.com/user/repos

使用时,可以将环境变量作为参数传递给脚本:

./github.sh 1234567890abcdefghijklm
使用 SSH 密钥

如果您需要在多个 Git 仓库之间交换数据,我们建议您使用 SSH 密钥进行身份验证。使用 SSH 密钥与使用令牌或密码进行身份验证的主要区别在于,令牌或密码是针对一个特定的 Git 仓库或 API 请求,而 SSH 密钥是全局的身份验证方式。

以下示例演示了如何使用 SSH 密钥进行身份验证:

#!/bin/bash

# 设置 SSH 秘钥路径
SSH_PRIVATE_KEY=$HOME/.ssh/id_rsa

# 删除旧的 SSH 秘钥文件
[ -f "$SSH_PRIVATE_KEY" ] && rm -f "$SSH_PRIVATE_KEY"

# 生成新的 SSH 秘钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f "$SSH_PRIVATE_KEY"

# 清理 SSH 主机命名解析列表
ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts

# 发送 Git 操作请求
git clone git@github.com:user/example-repo.git

在上面的示例中,我们首先生成了一对 SSH 密钥,然后将公钥(id_rsa.pub)添加到 GitHub 帐户的 SSH 密钥列表中。然后我们使用 Git 克隆操作请求克隆了 GitHub 仓库。在运行此示例之前,请将 user/example-repo.git 替换为实际的 GitHub 仓库 URL。

结论

本文介绍了如何避免在 Shell/Bash 脚本中使用 GitHub 凭据。我们推荐您使用环境变量或 SSH 密钥进行身份验证,以减少凭据泄漏的风险。除此之外,您还可以使用 Keychain 或 GNOME Keyring 等钥匙环工具来安全地保存凭据。