同一台机器上多个用户使用各自的 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中执行。
阅读 —
·
全站 —