External source of information: - Configure multiple SSH identities for GitBash, Mac OSX, & Linux - Set up SSH for Git and Mercurial on Mac OSX/Linux Prerequisites: - Mercurial (Hg) - SSH-agent Let's say you have multiple accounts on Bitbucket and wondered how to automate authentication for your Mercurial (Hg) repositories on these accounts. Well, if you find yourself in such a situation then you will find below instructions useful. Lets consider you have 3 accounts on Bitbucket with below usernames: 1. accountusername1 2. accountusername2 3. accountusername3 Now, lets step-up the SSH authentication for the above accounts using your username as an identifier. Step 1. Create SSH keys Create three seperate SSH keys in '~/.ssh/' directory, with the below commands (Note! when asked to enter 'Enter passphrase' leave it blank!): $ cd ~/.ssh/ $ ssh-keygen -f ~/.ssh/SSH_ID_bitbucket_accountusername1 -C "SSH_ID_bitbucket_accountusername1" $ ssh-keygen -f ~/.ssh/SSH_ID_bitbucket_accountusername2 -C "SSH_ID_bitbucket_accountusername2" $ ssh-keygen -f ~/.ssh/SSH_ID_bitbucket_accountusername3 -C "SSH_ID_bitbucket_accountusername3" $ ls ~/.ssh/ Step 2. Create aliases for the above SSH keys Create 'config' file in '~/.ssh/' directory, with the following content: Host accountusername1 HostName bitbucket.org IdentityFile ~/.ssh/SSH_ID_bitbucket_accountusername1 Host accountusername2 HostName bitbucket.org IdentityFile ~/.ssh/SSH_ID_bitbucket_accountusername2 Host accountusername3 HostName bitbucket.org IdentityFile ~/.ssh/SSH_ID_bitbucket_accountusername3 Step 3. Configure Hg data compression on using SSH On your Xubuntu, configure Mercurial (Hg) to compress data. So now edit this file '~/.hgrc' with the below content: [ui] # Name to appear in commits username = MyName <[email protected]> ssh = ssh -C Step 4. Load SSH keys to your Bitbucket account/s Load the above generated SSH keys to your appropriate Bitbucket account respectively. Therefore, just copy-&-paste the content of the below file to your 'accountusername1' Bitbucket's SSH-key editor: '~/.ssh/SSH_ID_bitbucket_accountusername1.pub' Now, repeat this step to your other Bitbucket accounts respectively. Step 5. Load SSH keys to ssh-agent On your Xubuntu, make sure ssh-agent in running under a given PID, with below command: $ ps -e | grep [s]sh-agent List the loaded SSH keys into ssh-agent, with below command: $ ssh-add -l Now, load all above created SSH keys to the ssh-agent, with below commands: $ ssh-add ~/.ssh/SSH_ID_bitbucket_accountusername1 $ ssh-add ~/.ssh/SSH_ID_bitbucket_accountusername2 $ ssh-add ~/.ssh/SSH_ID_bitbucket_accountusername3 $ ssh-add -l Step 6. Test: SSH key authentication Now, test if the SSH key authentication works for the Hg repository created on Bitbucket: i. Create a local Hg repository on your Xubuntu machine, with below commands: $ mkdir ~/AuthTest_Hg $ cd ~/AuthTest_Hg/ $ touch File1.txt $ hg init $ hg add . $ hg commit -m "Initial commit" ii. Create a remote Hg repository called 'AuthTest_Hg' on your Bitbucket account, for e.g. on 'accountusername1' account. iii. Push the local Hg repository created in the above sub-step (i) to the remote repository on Bitbucket, with the below commands: $ cd ~/AuthTest_Hg/ $ hg push ssh://hg@accountusername1/accountusername1/authtest_hg Note! @accountusername1 <= Refers to alias I hope, you are now able to push the local commit to your Bitbucket repository. If so, you have succeeded in setting-up authentication using SSH key. Of course, for testing purposes you may repeat above three sub-steps for rest of your Bitbucket accounts. Step 7. Configure remote repository path If the above test worked, then add the remote repository path to your local repository configuration file and test the simple push command. i. Navigate to the Hg repository i.e. to 'AuthTest_Hg' repository and 'cd' into '/.hg' directory and create a file 'hgrc' with the below content: [paths] default = ssh://hg@accountusername1/accountusername1/authtest_hg ii. Now, test if the simple push works, with the below commands: $ cd ~/AuthTest_Hg/ Now, modify the contents of the 'File1.txt' file, which is in your repository and run the below commands: $ hg commit -m "New modification" $ hg push
0 Comments
Leave a Reply. |
AuthorCategories
All
Archives
January 2019
|