簡體   English   中英

如何在同一個系統中用多個ssh密鑰維護多個bitbucket賬戶

[英]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到現在有點幫助

為 Mac OSX、GitBash 和 Linux 創建多個身份

此時您應該已經創建了至少一個默認身份。 要查看您是否已有默認身份,請列出 .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 配置文件機制來為您的各種身份創建別名。 您可以使用許多參數和不同的方法來構建 SSH 配置文件。 本示例中使用的別名條目的格式為:

Host alias
HostName bitbucket.org
IdentityFile ~/.ssh/identity

要為兩個身份(workid 和personalid)創建配置文件,您將執行以下操作:

  1. 打開終端窗口。

  2. 編輯 ~/.ssh/config 文件。 如果您沒有配置文件,請創建一個。

  3. 為每個身份組合添加別名,例如:

     Host workid HostName bitbucket.org IdentityFile ~/.ssh/workid Host personalid HostName bitbucket.org IdentityFile ~/.ssh/personalid
  4. 關閉並保存文件。

現在,您可以替換部分存儲庫 URL 地址的別名,如下所示: git@bitbucket.org:accountname/reponame.git -> git@alias:accountname/reponame.git

將每個密鑰加載到相應的 Bitbucket 帳戶中

在此處輸入圖片說明

確保 ssh-agent 正在運行並加載了您的密鑰

在此處輸入圖片說明

使用 SSH 和您的別名配置克隆存儲庫

要使用您配置的多個 SSH 身份之一克隆存儲庫,請克隆該存儲庫並在 SSH URL 中使用您的別名。 要親自嘗試,請登錄 Bitbucket 並執行以下操作:

  1. 導航到存儲庫概覽。
  2. 顯示 SSH URL。
    例如,ssh URL 為:
    git@bitbucket.org:accountname/reponame.git
    然后使用以下命令克隆存儲庫:
    git clone git@ personalid :accountname/reponame.git

這是指官方的解決方案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。

  1. 打開終端並為兩個用戶名創建 2 ssh file2:

ssh-keygen -f ~/.ssh/username1-Bitbucket

ssh-keygen -f ~/.ssh/username2-Bitbucket

  1. 啟動 ssh-agent:

eval $(ssh-agent)

  1. 創建或編輯 ~/.ssh/config 文件:

創建:

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
  1. 將密鑰添加到 ssh-agent:

ssh-add --apple-use-keychain ~/.ssh/username1-Bitbucket

ssh-add --apple-use-keychain ~/.ssh/username2-Bitbucket

  1. 復制 ssh 密鑰並將其添加到您的 bitbuckets 帳戶。 鏈接

pbcopy < ~/.ssh/username1-Bitbucket.pub

pbcopy < ~/.ssh/username1-Bitbucket.pub

  1. 檢查與 bitbucket 的連接是否成功(至少一個)以將 Bitbucket 添加為已知主機:

ssh -T git@bitbucket.org

  1. 在終端上使用 ssh 和 cd 克隆您的存儲庫到存儲庫文件夾。

  2. 檢查 reposiroties 遠程 url:

git remote -v

你會得到這樣的信息:

git@bitbucket.org:companyUserName/repositoryName.git

  1. 更改存儲庫遠程 url:

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 -> username1username2 ,帳戶的用戶名。

bitbucket -> username1-Bitbucketusername2-Bitbucket ,配置文件的主機別名。

companyUserName -> 這是持有存儲庫的帳戶的用戶名,在我們的例子中,存儲庫由 username1 或 username2 所有。

repositoryName -> 存儲庫的名稱。

  1. 在創建新分支並嘗試推送它的兩個存儲庫上測試您的連接:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM