同一谷歌认证Bitbucket账号多工作区SSH免修改配置咨询
我有两个Bitbucket工作区,Bitbucket要求不同工作区使用独立SSH密钥。当前我的.ssh/config配置如下:
Host bitbucket.org IdentitiesOnly yes AddkeysToAgent yes IdentityFile ~/.ssh/bitbucket IdentityFile ~/.ssh/id_ed25519
但目前连接其中一个工作区时,必须注释另一个密钥并保存配置文件。想知道有没有办法无需修改配置就能同时操作两个工作区的代码库?
【补充说明】我使用的是同一谷歌认证账号。之前参考过两个关于多SSH密钥的问题,但都是针对多账号场景,可在配置文件中区分账号。而我作为自由职业者,没有为每个客户创建独立账号,仅由客户提供工作区代码库的访问权限。另外查看了Bitbucket官方的Jira问题(BCLOUD-20631),内容翻译如下:
该问题是用户反馈同一账号下不同Bitbucket工作区无法使用不同SSH密钥认证的问题,Atlassian官方目前的回复是:当前Bitbucket Cloud的设计是一个SSH公钥只能关联到一个工作区,同一账号下的多个工作区无法共享同一个SSH密钥,且暂不支持同一账号下为不同工作区配置不同SSH密钥的功能,官方将此问题列为改进需求,后续会关注社区反馈并考虑是否实现该功能。
你可以通过在.ssh/config中为Bitbucket设置不同的Host别名,并分别指定对应的密钥,同时配合修改Git仓库的远程地址来实现无需切换配置即可访问不同工作区。具体步骤如下:
修改
.ssh/config配置
将原有配置替换为以下内容,每个工作区对应一个Host别名:Host bitbucket-workspace1 HostName bitbucket.org IdentitiesOnly yes AddKeysToAgent yes IdentityFile ~/.ssh/bitbucket # 对应第一个工作区的密钥 Host bitbucket-workspace2 HostName bitbucket.org IdentitiesOnly yes AddKeysToAgent yes IdentityFile ~/.ssh/id_ed25519 # 对应第二个工作区的密钥修改Git仓库的远程地址
对于第一个工作区的代码库,将远程地址中的bitbucket.org替换为bitbucket-workspace1:git remote set-url origin git@bitbucket-workspace1:<工作区1用户名>/<仓库名>.git对于第二个工作区的代码库,替换为
bitbucket-workspace2:git remote set-url origin git@bitbucket-workspace2:<工作区2用户名>/<仓库名>.git
这样配置后,访问不同工作区的仓库时,SSH会自动匹配对应的Host别名和密钥,无需再手动修改.ssh/config文件。
另外,也可以在克隆仓库时直接使用别名地址,避免后续修改:
# 克隆工作区1的仓库 git clone git@bitbucket-workspace1:<工作区1用户名>/<仓库名>.git # 克隆工作区2的仓库 git clone git@bitbucket-workspace2:<工作区2用户名>/<仓库名>.git
内容的提问来源于stack exchange,提问作者Simple Fellow

