同一台机器上多个用户使用各自的 SSH 私钥

同一台机器上多个用户使用各自的 SSH 私钥

在多人共用一台机器、或同一机器需要同时操作多个代码托管账号的场景下,需要为不同的账号指定不同的 SSH 私钥。以下是三种常见方法。

1 方法一:在 ~/.ssh/config 中按 Host 指定私钥

(1) 全局配置用户名和邮箱

git config -e --global
[user] name = yourname email = you@example.com

(2) 为不同账号生成各自的公钥/私钥

# 交互时输入完整的文件路径,例如 ~/.ssh/id_rsa_work ssh-keygen -t rsa # Generating public/private rsa key pair. # Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa_work

(3) 编辑 ~/.ssh/config,按 Host 映射私钥

Host icode.example.com HostName icode.example.com IdentityFile ~/.ssh/id_rsa_work User yourname

这样使用 git clone ssh://icode.example.com/... 时,SSH 会自动使用 ~/.ssh/id_rsa_work 进行认证。

2 方法二:使用 HTTPS 协议时的无密码输入 / 凭据缓存

git config --global credential.helper "cache --timeout=999999"

timeout 单位是秒,指定凭据在内存缓存中的过期时间。也可以使用 store 模式长期保存。

3 方法三:使用 ssh-agent,在 ssh-add 时指定私钥位置

# clone 代码 ssh-agent sh -c 'ssh-add ~/.ssh/id_rsa; git clone ssh://you@icode.example.com:8235/group/repo.git' # push 代码 ssh-agent sh -c "ssh-add ~/.ssh/id_rsa; git push origin HEAD:refs/for/master"

把私钥添加到 ssh-agent 后,克隆/推送过程不再需要手工输入密钥口令。

注意:ssh-agent 每次启动的 agent 环境只在当前 shell 进程内有效,因此需要把 ssh-add 和 git 操作放在同一个 sh -c 中执行。

阅读 — · 全站 —
🎸 我的歌单 0 首