git@git clone指定私钥

目的

当你需要使用特定的 SSH 私钥来克隆 Git 仓库时

步骤

m1.使用 SSH_CONFIG 文件

  1. 编辑或创建 ~/.ssh/config 文件
  2. 添加以下内容:
1
2
3
4
5
Host github.com  # 或其他 Git 服务器地址
HostName github.com
User git
IdentityFile ~/.path/to/your/private_key
IdentitiesOnly yes
  1. 然后正常使用 git clone 命令:
1
git clone git@github.com:username/repository.git

m2.使用 ssh-agent

  1. 首先启动 ssh-agent:
1
eval "$(ssh-agent -s)"
  1. 添加你的私钥:
1
2
3
4
ssh-add ~/.path/to/your/private_key

设置密钥超时时间(到期后自主注销)
ssh-add -t 3600 ~/.ssh/your_key # 设置1小时后过期(单位:秒)
  1. 然后正常使用 git clone 命令

ssh-add管理临时加载私钥

1. 查看当前已加载的密钥

首先查看 ssh-agent 中已经添加了哪些密钥:

1
2
ssh-add -l
ssh-add -L # 显示密钥详情

这会显示所有已加载密钥的指纹和对应的注释。

2. 移除特定密钥

要移除特定的密钥:

1
ssh-add -d ~/.ssh/your_private_key

或者使用密钥的完整路径:

1
ssh-add -d /path/to/your/private_key

3. 移除所有密钥

要一次性移除 ssh-agent 中的所有密钥:

1
ssh-add -D

4. 完全重置 ssh-agent

如果你想彻底重置 ssh-agent(包括所有密钥和代理本身):

1
ssh-agent -k

这会杀死当前的 ssh-agent 进程。下次需要时,它会自动重新启动。

注意

  1. 这些命令只会影响 ssh-agent 中的密钥缓存,不会删除实际的密钥文件。
  2. 如果你在多个终端会话中使用 ssh-agent,可能需要在这些会话中分别执行移除操作。
  3. 移除密钥后,后续的 SSH 操作(如 git push/pull)可能需要重新验证或输入密码。

示例流程

1
2
3
4
5
6
7
8
9
10
11
# 查看当前加载的密钥
ssh-add -l

# 移除特定密钥
ssh-add -d ~/.ssh/id_rsa_work

# 确认已移除
ssh-add -l

# 如果需要移除所有密钥
ssh-add -D

注意事项

  • 确保私钥文件权限设置为 600
    1
    chmod 600 ~/.path/to/your/private_key
  • 如果私钥有密码,使用上述方法时需要输入密码
  • 对于 GitHub,确保对应的公钥已添加到你的 GitHub 账户ß