Set up SSH for Mercurial

リダイレクトのお知らせ

This page will redirect to /bitbucket/set-up-an-ssh-key-728138079.html .

SSH の設定がまだであるため、このページを訪れたのであれば、これまでは安全なハイパーテキスト転送プロトコル(HTTPS)を使用して、ローカル システムと Bitbucket クラウド間の通信をしていたということでしょう。HTTPS を使用する場合、Bitbucket との接続が必要な操作を実行するたびに認証(ユーザー名とパスワードの入力)が必要となります。そんな手間をかけたい人がいるでしょうか。このページでは、セキュア シェル(SSH)を使用して Bitbucket server と通信し、毎回パスワードを手動で入力しなくてもよい方法を説明します。

SSH の設定

Setting up an SSH identity can be prone to error. Allow yourself some time, perhaps as much as an hour depending on your experience, to complete this page. If you run into issues, check out Troubleshoot SSH issues for extra information that may help you along. You can even skip this whole page and continue to use HTTPS if you want.

Bitbucket で SSH を使用するには、秘密鍵(ローカルコンピュータ上)と鍵のペアを作成する公開鍵(Bitbucket にアップロード済み)を含む SSH のアイデンティティを作成します。ローカル システムと Bitbucket の間に SSH を設定したあとは、システムは鍵ペアを使用して、関連するアカウントがアクセス権を持つすべてに対してユーザーを自動認証します。

セキュリティ上の理由から、少なくとも年に一度は新しい SSH 鍵を生成し、アカウントの既存の鍵と交換することをお勧めします。

SSH のアイデンティティと Bitbucket を使用して作業する際に必要となる重要な概念がいくつかあります。

  • アイデンティティの公開鍵をアカウントをまたいで再利用することはできません。個々の Bitbucket アカウントごとに SSH アイデンティティを作成する必要があります。 
  • 複数のアイデンティティを 1 つの Bitbucket アカウントに関連付けることが可能です。

    そのように設定する理由を教えてください。

    たとえば、仕事用のコンピュータや自宅のコンピュータからリポジトリにアクセスしている場合などは、同じアカウントに複数のアイデンティティを作成します。スクリプトを使用して、リポジトリで DVCS 操作を実行したい場合、複数のアイデンティティを作成する方法もあります - スクリプトはパスフレーズが空の状態で公開鍵を使用するため、人の手を介することなくスクリプトを実行できます。

  • RSA(R. R ivest、A. S hamir、L. A dleman が発案者)およびデジタル署名アルゴリズム(DSA)は、鍵暗号化アルゴリズムです。Bitbucket は両方のタイプのアルゴリズムをサポートしています。自分が最も使いやすく、利用可能な暗号化方式を使用して、アイデンティティを作成するべきです。

The following sections cover how to set up SSH for Mercurial.

Windows 用の SSH 設定

Step 1. Install TortoiseHg

TortoiseHg is the Microsoft Windows version of Mercurial. If you haven't installed Mercurial yet, installing TortoiseHg automatically gives you Mercurial. If you have installed Mercurial, TortoiseHg allows you to set up SSH and give you another option in place of the command line.

After you download the all-in-one installer (MSI version) and install it, you may need to restart your system for the installation to take effect.

Step 2. Install PuTTYgen and configure PuTTY

PuTTYgen is a free RSA and DSA key generation tool that you also use when setting up SSH.

  1. Download the proper version of the utilities for your system – each one is a single executable file.
  2. Move the puttygen.exe executable to the C:\Program Files\TortoiseHg folder.
  3. Start Putty.
    The PuTTy Configuration dialog displays. Use this dialog to configure your PuTTy sessions. 
  4. Under the Session node, select Default Settings and press Load.
    This allows you to edit the Default Settings session configuration. 
  5. Under the Connection node, click SSH.
     The Options controlling SSH connections display.
  6. Check Enable compression.
    This option can improve performance of a low-band connection. 
  7. Click the Session node, select Default Settings and press Save.
     
  8. Click the Close button (red x).

Step 3. Create your default identity

The following procedure creates a default identity with PuttyGen. If you have an existing private key, you can skip this step and go onto  Enable SSH compression for Mercurial.

  1. Locate the puttygen.exe executable in your system and double click the icon to start it.
    If you are following along with this tutorial, you installed PuTTYgen in C:\Program Files\TortoiseHG. The system opens the PuTTY Key Generator dialog.
  2. Complete
  3. Press Generate.
    Following the instructions to generate some randomness.

    When the generation completes, the system displays the public key and a number of other fields.
  4. Enter and confirm a key passphrase.
  5. Press Save private key.
    The system prompts you for a location to save the file and a file name. By convention, store your key files in a folder called C:\Users\yourname\.ssh. and give it a .ppk extension.
  6. Go ahead and close PuTTYgen.

Step 4. Enable SSH compression for Mercurial

When sending or retrieving data using SSH, Git does compression for you. Mercurial does not automatically do compression.  If you are using Mercurial, you should enable SSH compression as it can speed up things drastically, in some cases. To enable compression for Mercurial, do the following:
  1. Start the TortoiseHg Workbench.
  2. Select File > Settings.
  3. Make sure you have the global settings tab selected.
  4. Press Edit File.
  5. Add the following line to the UI section:

    ssh = "TortoisePlink.exe" -ssh -2 -batch -C

    When you are done the file should look similar to the following:

    [ui]
    # Name data to appear in commits
    username = Emma Paris <emmap1@atlassian.com>
    ssh = "C:\Program Files\TortoiseHg\TortoisePlink.exe" -ssh -2 -batch -C
  6. Press Save to store your settings and close the file.
  7. Press OK to close the settings dialog.

Step 5. Start Pageant and install your private key

TortoiseHG comes with Pageant which is an SSH authentication agent. You load your keys into Pageant and it automatically authenticates you so you don't need to enter your passphrase. Do the following to load your keys:

  1. Start Pageant by double clicking its icon.
    By default, TortoiseHG installs the Pageant in the C:\Program Files\TortoiseHG folder. When it is running, Pageant appears in your system tray:
  2. Double-click the Pageant icon to launch the Pageant Key List dialog.
  3. Click the Add Key button.
    The system displays the Select Private Key File dialog.
  4. Navigate to and open the default key you created previously.
  5. Enter the passphrase when prompted:
  6. Press OK.
    Pageant shows your key in the running list.
  7. Press Close to close the dialog.
    Pageant continues to run on your system.

ステップ 6. Bitbucket アカウントへの公開鍵のインストール

  1. From your avatar in the bottom left, click Bitbucket settings.
    Bitbucket displays the Account settings page.
  2. Click SSH keys.
    The SSH Keys page displays. It shows a list of any existing keys. Then, below that, a dialog for labeling and entering a new key.
  3. Switch to your local desktop and start the PuTTYgen program.
  4. Press Load.
  5. Navigate to and open your default private key.
  6. Enter your passphrase when prompted and press OK.
    The system displays your public key.
  7. Select and copy the contents of the Public key for pasting into OpenSSH authorized_keys file field.
  8. ブラウザに戻って、新しい鍵の ラベル を入力します。たとえば、既定の公開鍵 など 。
  9. Paste the copied public key into the SSH Key field:
  10. Press Add key.
    The system adds the key and it appears in the SSH Keys listing.
  11. Close PuTTYgen.

Step 7. Configure your local repository to use the SSH protocol

The URL you use for a repository depends on which protocol you are using, HTTPS and SSH. The Bitbucket repository Overview page has a quick way for you to see the one for your myquotefork repository. On the repository's Overview page look for the Clone this repository line. Experiment for a moment, click back and forth between the SSH and the HTTPS protocol links to see how the URLs differ. The table below shows the format for each DVCS based on protocol.

SSH URL 書式

ssh://hg@bitbucket.org / accountname /reponame/

HTTPS URL 形式 https:// accountname @bitbucket.org/ accountname / reponame

In the SSH format, the  accountname  appears  after  hg@bitbucket.org . In HTTPS format, the  accountname  appears before   hg@bitbucket.org.

Go to your local system and navigate to your myquotefork repository (the only Mercurial repository you've worked with so far). These instructions assume you have added the repository to the TortoiseHG Workbench.

  1. Start TortoiseHG.
  2. Right click your myquotefork repository and choose Settings.
    The system displays the TortoiseHG Settings dialog with the myquotefork repository settings tab active.
  3. Press Edit File.
  4. View your current repository configuration.
    You should see something similar to the following:

    [paths]
    default = https://bitbucket.org/newuserme/myquotefork
  5. Change the default value to use the SSH format for that repository.
    When you are done you should see something similar to the following:

    [paths]
    default = ssh://hg@bitbucket.org/newuserme/myquotefork
  6. Press Save to close the editor.

  7. Press OK to close the settings dialog.
  8. Restart TortoiseHG Workbench so that it uses the new SSH setting.

ステップ 8. 新しいプロトコルでの変更

  1. Edit the Index.html file in your repository.
  2. Add a new line to the file.

  3. Save and close the file.
  4. Add and then commit your change to your local repository.

  5. Push your changes to your fork.
    A successful push shows in your TortoiseHG log as follows:

    pushing to ssh://hg@bitbucket.org/newuserme/myquotefork
    searching for changes
    remote: adding changesets
    remote: adding manifests
    remote: adding file changes
    remote: added 1 changesets with 1 changes to 1 files
    remote: bb/acl: newuserme is allowed. accepted payload.
    [command completed successfully Mon Dec 19 10:49:06 2011]
    myquotefork

    PuTTY may warn you that the host key is not yet stored. If that happens, press Yes to add the bitbucket.org host key.

  6. Open the repository Overview in Bitbucket to view your commit.
Mac OS / Linux 用の SSH 設定

ステップ 1. SSH クライアントがインストール済みであることの確認

多くの場合、SSH は Mac OS や Linux のバージョンに付属しています。念のために、次の操作でインストールを確認します。

  1. ターミナル ウィンドウから、次のコマンドを入力して、インストールされている SSH のバージョンを識別します。
    SSH がインストールされている場合は、次のように表示されるはずです。

    $ ssh -v
    OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
    usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
               [-D [bind_address:]port] [-e escape_char] [-F configfile]
               [-I pkcs11] [-i identity_file]
               [-L [bind_address:]port:host:hostport]
               [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
               [-R [bind_address:]port:host:hostport] [-S ctl_path]
               [-W host:port] [-w local_tun[:remote_tun]]
               [user@]hostname [command]

    If you have ssh installed, go to the next step. 
    If you don't have ssh installed, install it now.

  2. List the contents of your ~/.ssh directory.
    If you don't have an .ssh directory, don't worry, you'll create it the next section. If you have a .ssh directory or you may see something like this:

    $ ls -a ~/.ssh
    known_hosts

    すでに既定のアイデンティティを持っている場合、次の 2 つの id_* ファイルが表示されます。

    $ ls -a ~/.ssh
    .        ..        id_rsa        id_rsa.pub    known_hosts

    この場合、既定のアイデンティティは RSA 暗号化(id_rsa.pub)を使用します。Bitbucket アカウント用に既存のアイデンティティを使用する場合は、次のセクションをスキップして、ssh エージェントの起動と鍵のロード に進みます。

ステップ 2. 既定のアイデンティティの設定

By default, the system adds keys for all identities to the /Users/<yourname>/.ssh directory on Mac OSX, or /home/<yourname>/.ssh on Linux. This procedure creates a default identity. If you have a default identity and you want to use it for Bitbucket, skip this step and go to  start the ssh-agent and load your keys. If you have an existing default identity but you forgot the passphrase, you can also use this procedure to overwrite your default identity and create a fresh one.

複数のアイデンティティ使用を希望しますか。

SSH アイデンティティは複数作成できます。ただし、この操作は上級向けの内容であり、このチュートリアルの取り扱い範囲外です。複数のアイデンティティを作成する方法については、GitBash、Mac OSX、Linux 用の複数アイデンティティの設定 を参照してください。

次の手順で、既定のアイデンティティを新しく作成します。

  1. ローカル システムでターミナルを開きます。
  2. コマンドラインで ssh-keygen を入力します。
    鍵を保存するファイルの指定を求めるプロンプトが、コマンドによって表示されます。.ssh ディレクトリがない場合、システムが代わりに作成します。

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/emmap1/.ssh/id_rsa):
  3. Enter キーまたはReturn キーを押して、既定の場所を承認します。
  4. プロンプトが表示されたら、パス フレーズの入力と確認入力を行います。
    スクリプトなどのプロセスで鍵を必要とする場合を除き、常にパスフレーズを入力する必要があります。コマンドは公開鍵と秘密鍵とともに既定のアイデンティティを作成します。全体の流れは、次のようになります。

    $ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/emmap1/.ssh/id_rsa):
    Created directory '/Users/emmap1/.ssh'.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /Users/emmap1/.ssh/id_rsa.
    Your public key has been saved in /Users/emmpa1/.ssh/id_rsa.pub.
    The key fingerprint is:
    4c:80:61:2c:00:3f:9d:dc:08:41:2e:c0:cf:b9:17:69 emmpa1@myhost.local
    The key's randomart image is:
    +--[ RSA 2048]----+
    |*o+ooo.          |
    |.+.=o+ .         |
    |. *.* o .        |
    | . = E o         |
    |    o . S        |
    |   . .           |
    |    .            |
    |                 |
    |                 |
    +-----------------+
  5. ~/.ssh の内容を一覧表示して、鍵ファイルを表示します。

    $ ls -a ~/.ssh

ステップ 3. ssh エージェントの起動と鍵のロード

If you are running OSX 10.6.8 or later you can skip this step. The OSX 10.6.8 system asks for your connection parameters the first time you try to establish a SSH connection. Then, it automatically starts the ssh-agent for you.  If you don't have OSX 10.6.8 or are running another Linux operating system, do the following:

  1. Open a terminal window and enter the  ps -e | grep [s]sh-agent  command to see if the agent is running.

    $ ps -e | grep [s]sh-agent
     9060 ?? 0:00.28 /usr/bin/ssh-agent -l
  2. エージェントが実行されていない場合、次のコマンドを使用して、手動で起動します。

    $ ssh-agent /bin/bash


  3. Load your new identity into the ssh-agent  management program using the  ssh-add  command.

    $ ssh-add ~/.ssh/id_rsa
    Enter passphrase for /Users/emmap1/.ssh/id_rsa:
    Identity added: /Users/emmap1/.ssh/id_rsa (/Users/emmpa1/.ssh/id_rsa)


  4. Use the  ssh-add  command to list the keys that the agent is managing.

    $ ssh-add -l
    2048 7a:9c:b2:9c:8e:4e:f4:af:de:70:77:b9:52:fd:44:97 /Users/manthony/.ssh/id_rsa (RSA)


Step 4. Enable SSH compression for Mercurial

Enabling SSH compression is recommended but not required.

By default, Git automatically performs compression when sending or retrieving data, but Mercurial doesn't. Enabling SSH compression can speed up sending and retrieving data, drastically in some cases.

To enable SSH compression:

  1. Open the Mercurial global configuration file (~/.hgrc).
  2. Add this line to the UI section:

    ssh = ssh -C

    When you are done the file should look similar to this:

    [ui]
    # Name data to appear in commits
    username = Emma <emmap1@atlassian.com>
    ssh = ssh -C
  3. Save and close the file.

ステップ 5. Bitbucket アカウントへの公開鍵のインストール

  1. Bitbucket Cloudで、アプリケーション メニューから アバター > Bitbucket の設定 を選択します。
    システムによって アカウント設定 ページが表示されます。
  2. SSH 鍵 をクリックします。
    SSH 鍵 ページが表示されます。既存の鍵を持っている場合は、このページに表示されます。
  3. ターミナル ウィンドウに戻って、公開鍵ファイルの内容をコピーします。
    たとえば、Linux では、内容を cat 出力します。

    $ cat ~/.ssh/id_rsa.pub

    In Mac OS X, the following command copies the output to the clipboard:

    $ pbcopy < ~/.ssh/id_rsa.pub
  4. ブラウザに戻って、新しい鍵の ラベル を入力します。たとえば、既定の公開鍵 など 。

  5. コピーした公開鍵を SSH  フィールドに貼り付けます。
  6. 鍵の追加  を押します。
    システムによって鍵がアカウントに追加されます。Bitbucket は鍵の追加を確認するメールを送信します。 

Step 6. Change your repo from HTTPS to the SSH protocol

The URL you use for a repo depends on which protocol you are using, HTTPS or SSH. The Clone button of your repository has a quick way for you to see these URLS.

A. Clone button: Click this button to clone a repository.
B. Protocol, clone command: Pick HTTPS or SSH and copy text to the command line.

試しに、SSH プロトコルと HTTPS プロトコルのリンクを交互にクリックしてみれば、URL が異なることを確認できます。下の表は、プロトコルに応じた書式を示しています。

SSH URL 書式

ssh://hg@bitbucket.org /< accountname>/<reponame>

HTTPS URL 形式 https://<accountname>@bitbucket.org/< accountname>/<reponame>

To make the change, go to a terminal on your local system and navigate to your repository locally. Then, do the following:

  1. 現在のリポジトリ設定を表示します。
    次のように表示されるはずです。

    $ cd ~/<path_to_repo>
    $ cat .hg/hgrc
    [paths]
    default = https://emmap1@bitbucket.org/emmap1/bitbucketspacestation

    As you can see, the default URL is using the HTTPS protocol.

  2. Open the ~/<path_to_repo>/.hg/hgrc file with your favorite editor.
  3. Change the default value to use the SSH format for that repo.
    When you are done you should see something similar to the following:

    [paths]
    default = ssh://hg@bitbucket.org/emmap1/bitbucketspacestation

    Save and close the configuration file.

ステップ 7. 新しいプロトコルでの変更

  1. From the local directory of your bitbucketspacestation repository, create a new file called readme.txt.
  2. Add the following text to the README.txt file:

    Welcome to My First Repo
    -------------------------------
    This repo is a practice repo I am using to learn bitbucket.
    You can access this repo with SSH or with HTTPS.
  3. Save and close the file.
  4. ローカルのリポジトリに変更を追加して、コミットします。

    $ hg add README
    $ hg commit -m "making a change under the SSH protocol"
  5. Push your changes.
    The system warns you that it is adding the Bitbucket host to the list of known hosts.

    $ hg push
    Warning: Permanently added the RSA host key for IP address '207.223.240.182' to the list of known hosts.
    pushing to ssh://hg@bitbucket.org/emmap1/bitbucketspacestation
    searching for changes
    remote: adding changesets
    remote: adding manifests
    remote: adding file changes
    remote: added 1 changesets with 1 changes to 1 files
    remote: bb/acl: emmap1 is allowed. accepted payload.
  6. Bitbucket でリポジトリ 概要 を開き、コミットを表示します。
Last modified on Aug 17, 2017

この翻訳に満足しましたか?

はい
いいえ
この記事についてのフィードバックを送信する

Not finding the help you need?

コミュニティへの質問

Powered by Confluence and Scroll Viewport.