[英]How to maintain multiple bitbucket accounts with multiple ssh keys in the same system
我有多個 Git 帳戶,一個是我個人使用的,一個是公司使用的。 這兩個帳戶源都需要從我的筆記本電腦上激活。 在這里,我生成了兩個 ssh 密鑰,如 id_rsa.pub、id_benwork_rsa.pub ,並將 git 的配置配置為
Host sfsworkdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_rsa
Host workdid
HostName bitbucket.org
IdentityFile ~/.ssh/id_benwork_rsa
所以這是我的問題:在推送到任何 repo git 時詢問第一個 ssh_key 密碼。 每次我將 git 配置中的 user.name 更改為git config user.name "mybitbucketusername" 。 所以請告訴我如何在同一系統中使用多個 ssh 密鑰維護多個 git 帳戶
我試過如何使用多個 ssh 密鑰, 多個 bitbucket 帳戶但沒有用
push using multiple account / multiple identity on github / bitbucket到現在有點幫助
此時您應該已經創建了至少一個默認身份。 要查看您是否已有默認身份,請列出 .ssh 目錄的內容。 默認身份文件顯示為 id_encrypt 和 id_encrypt.pub 對。 加密值為 rsa 或 dsa。 使用 ssh-keygen 命令創建新身份。 在下面的示例中,身份被命名為personalid。
$ ssh-keygen -f ~/.ssh/personalid -C "personalid"
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/manthony/.ssh/personalid.
Your public key has been saved in /Users/manthony/.ssh/personalid.pub.
The key fingerprint is:
7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 personalid
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| .|
| Eo|
| . S . ..|
| . . o . ... .|
| . = = ..o o |
| . o X ... . .|
| .ooB.o .. |
+-----------------+
如果您有多個 Bitbucket 賬戶,則需要為每個賬戶生成一個新的公私鑰對。
當您有多個身份文件時,創建一個 SSH 配置文件機制來為您的各種身份創建別名。 您可以使用許多參數和不同的方法來構建 SSH 配置文件。 本示例中使用的別名條目的格式為:
Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity
要為兩個身份(workid 和personalid)創建配置文件,您將執行以下操作:
打開終端窗口。
編輯 ~/.ssh/config 文件。 如果您沒有配置文件,請創建一個。
為每個身份組合添加別名,例如:
Host workid HostName bitbucket.org IdentityFile ~/.ssh/workid Host personalid HostName bitbucket.org IdentityFile ~/.ssh/personalid
關閉並保存文件。
現在,您可以替換部分存儲庫 URL 地址的別名,如下所示: git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git
要使用您配置的多個 SSH 身份之一克隆存儲庫,請克隆該存儲庫並在 SSH URL 中使用您的別名。 要親自嘗試,請登錄 Bitbucket 並執行以下操作:
這是指官方的解決方案Configure multiple SSH identity for GitBash, Mac OSX, & Linux ,對我來說很好用!
編輯你的 ~/.ssh/config 文件如下!
Host bitbucket.org-yourusername
HostName bitbucket.org
User yourusername
IdentityFile ~/.ssh/yoursshkey
IdentitiesOnly yes
更改您的遠程 git url 以在“@bitbucket.org”之前使用您的用戶名
git remote add origin yourusername@bitbucket.org:company/app.git
或者
git remote set-url origin yourusername@bitbucket.org:company/app.git
如果您還沒有克隆您的存儲庫:
git clone yourusername@bitbucket.org:company/app.git
上述~/.ssh/config
方法的替代方法是在克隆命令本身中指定配置變量core.sshCommand
。 例如,
git clone --config core.sshCommand='ssh -i/home/username/.ssh/id_ed25519' git@bitbucket.org:the_best/awesome_repo.git
這將設置本地存儲庫配置值並使后續的推/拉命令“正常工作”。
$ git config --local --get core.sshCommand
ssh -i/home/username/.ssh/id_ed25519
這在 git 2.10 及更高版本中受支持。
在 web 上進行大量搜索並在社區幫助下,我想出了如何在我的 Mac - MacOS Monterey 上配置 2 個不同的 bitbuckets 帳戶。
假設您有 2 個 bitbucket 帳戶,用戶名分別為 username1 和 username12。
ssh-keygen -f ~/.ssh/username1-Bitbucket
ssh-keygen -f ~/.ssh/username2-Bitbucket
eval $(ssh-agent)
創建:
touch ~/.ssh/config
open ~/.ssh/config
編輯:
open ~/.ssh/config
~/.ssh/config 文件應如下所示:
Host username1-Bitbucket
HostName bitbucket.org
User username1
IdentityFile ~/.ssh/username1-Bitbucket
Host username2-Bitbucket
HostName bitbucket.org
User username2
IdentityFile ~/.ssh/username2-Bitbucket
Host *
UseKeychain yes
AddKeysToAgent yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/username1-Bitbucket
IdentityFile ~/.ssh/username2-Bitbucket
IdentitiesOnly yes
PreferredAuthentications keyboard-interactive,password
ssh-add --apple-use-keychain ~/.ssh/username1-Bitbucket
ssh-add --apple-use-keychain ~/.ssh/username2-Bitbucket
pbcopy < ~/.ssh/username1-Bitbucket.pub
pbcopy < ~/.ssh/username1-Bitbucket.pub
ssh -T git@bitbucket.org
在終端上使用 ssh 和 cd 克隆您的存儲庫到存儲庫文件夾。
檢查 reposiroties 遠程 url:
git remote -v
你會得到這樣的信息:
git@bitbucket.org:companyUserName/repositoryName.git
git remote set-url origin username1@username1-Bitbucket:username1/repositoryName.git
git remote set-url origin username2@username2-Bitbucket:username2/repositoryName.git
所以我們將git@bitbucket.org:companyUserName/repositoryName.git
改為username1@username1-Bitbucket:username1/repositoryName.git
git
-> username1
或username2
,帳戶的用戶名。
bitbucket
-> username1-Bitbucket
或username2-Bitbucket
,配置文件的主機別名。
companyUserName
-> 這是持有存儲庫的帳戶的用戶名,在我們的例子中,存儲庫由 username1 或 username2 所有。
repositoryName
-> 存儲庫的名稱。
git checkout -b newBranch
git push origin newBranch
如果兩個存儲庫上的一切都正常工作,你就完成了!
希望這個解決方案適用於每個 Mac 用戶。
這都是民間的!
正面編輯:Bitbucket 現在似乎已停止支持下面描述的機制。 截至今天,我正在使用上面@shannon-chou 的解決方案,它運行良好。 剩下的帖子留在這里供歷史參考。 --JBC, 2019-06-23
在 2016 年,BitBucket 似乎增加了對更簡單的解決方案的支持,該解決方案不涉及對 .ssh 配置文件的額外檢查。 具體來說,現在可以使用 ssh 用戶名來指示您正在訪問的帳戶。 例如,而不是使用 git url
git@bitbucket.org:efhutton/squanzle.git
你可以使用 git url
efhutton@bitbucket.org:efhutton/squanze.git
(或 ssh://efhutton@bitbucket.org/efhutton/squanze.git ,這似乎是等效的)
基本問題是您的 ssh 客戶端將以固定順序顯示 ssh-key 身份。 假設您的工作帳戶名為 bobobogo,您的私人帳戶名為 efhutton,並且您的 ssh 客戶端配置為首先提供在 bobobogo 注冊的密鑰。 例如,如果您嘗試獲取與 efhutton 關聯的帳戶,則您的 ssh 客戶端提供 bobobogo 密鑰,bitbucket 接受它,然后觀察到 bobobogo 帳戶無法訪問 efhutton/squanze 存儲庫,並且阻止你。 使用新機制,您告訴 bitbucket 您想要使用為 efhutton 帳戶授權的密鑰,因此當您的 ssh 客戶端提供為 bobobogo 注冊的密鑰時,bitbucket 拒絕它,您的 ssh 客戶端可以提供下一個鍵,它與efhutton賬號注冊。
這篇博文中的詳細信息
https://bitbucket.org/blog/better-support-multiple-ssh-keys
編輯:您看到頂部的消息,對嗎?
請遵循此 Github 要點以供參考。 https://gist.github.com/shakeeb91/cd3d3c387f339fbd93ac7388b3c885e0
1) 在主目錄的 ~/.ssh/config 中創建配置文件。 2)添加代碼:
Host myaccount2access
HostName bitbucket.org
User git
IdentityFile /home/shakeeb/.ssh/newsshkey
IdentitiesOnly yes
and then clone the repository.
比跑下面。 確保使用您自己的回購詳細信息。
git clone git@myaccount2access:shakeeb91/repository.git
如果您收到“ssh:無法解析主機名:名稱或服務未知”錯誤,以下內容可能會有所幫助。
正如 Shannon Chou 的回答所指出的,您想創建 SSH aliases 。 GitHub、BitBucket 等有關於如何執行此操作的說明,但我在 Windows 10 上遇到了一個可能對其他人有幫助的問題。 SSH 有兩個不同的配置文件:一個系統范圍的配置文件和一個用戶特定的配置文件。 我閱讀的說明,包括 Shannon Chou 的說明,都說要將別名添加到位於 ~/.ssh/.config 的用戶特定配置文件中
就我而言,我需要將別名添加到系統范圍的配置文件中,在 Windows 10 上使用 Git 時,該文件通常位於:C:\\Program Files\\Git\\etc\\ssh\\ssh_config,在 Git 的目錄中。
您可以通過運行此命令來確定 SSH 正在使用哪個配置文件,“myalias”可以是任何字符串”我們感興趣的是這將輸出的配置文件路徑:
ssh -vv myalias
OpenSSH_7.1p2, OpenSSL 1.0.2d 9 Jul 2015
debug1: Reading configuration data /etc/ssh/ssh_config
請注意輸出中的文件路徑“/etc/ssh/ssh_config”。 這告訴我們 SSH 正在那里尋找別名,而不是在 ~/.ssh/.config 文件中。
如果其他評論不起作用,這是我為我的 bitbucket 帳戶所做的。
Host *
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
Host nameOfSSH-Bitbucket bitbucket.org
HostName bitbucket.org
User myBITBUCKETUserName
IdentityFile /Users/luisconstante/.ssh/nameOfSSH-Bitbucket
Host nameOf2ndSSH-Bitbucket bitbucket.org
HostName bitbucket.org
User myBITBUCKET2ndUserName
IdentityFile /Users/luisconstante/.ssh/nameOf2ndSSH-Bitbucket
git remote add origin myBITBUCKETUserName@bitbucket.org:mybitbucketteam/my-cool-app.git
git remote add origin myBITBUCKETUserName2@bitbucket.org:mybitbucketteam/my-cool-app2.git
如果您不想每次都輸入密碼(這可能不安全),您可以通過將密碼提示留空來創建一個新的 ssh 密鑰。
我試過UseKeychain yes
但它失敗了。 這對我有用。
如果我遺漏了什么,請告訴我,這是對其他評論的補充。
2019年
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.