Azure 上の Windows で SSH キーを使用する方法How to Use SSH keys with Windows on Azure

Azure で Linux 仮想マシン (VM) に接続するときは、公開キー暗号化を使用して、より安全な方法で Linux VM にログインできるようにする必要があります。When you connect to Linux virtual machines (VMs) in Azure, you should use public-key cryptography to provide a more secure way to log in to your Linux VM. このプロセスでは、ユーザー名とパスワードを使用する代わりに、SSH (Secure Shell) コマンドを使用して公開キーと秘密キーを交換して、自分を認証します。This process involves a public and private key exchange using the secure shell (SSH) command to authenticate yourself rather than a username and password. パスワードは、ブルートフォース攻撃に対して脆弱です。これは、特に Web サーバーなどのインターネットに接続された仮想マシンに当てはまります。Passwords are vulnerable to brute-force attacks, especially on Internet-facing VMs such as web servers. この記事では、SSH キーの概要と、Windows コンピューターで適切なキーを生成する方法について示します。This article provides an overview of SSH keys and how to generate the appropriate keys on a Windows computer.

SSH とキーの概要Overview of SSH and keys

公開キーと秘密キーを使用することで、セキュリティで保護された方法で Linux VM にログインできます。You can securely log in to your Linux VM by using public and private keys:

  • 公開キーは、Linux VM か、公開キー暗号化で使用する他のサービスに配置します。The public key is placed on your Linux VM, or any other service that you wish to use with public-key cryptography.
  • 秘密キーは、Linux VM にログインするときに自分の身元を証明するために渡すキーです。The private key is what you present to your Linux VM when you log in, to verify your identity. このキーは安全に保管してください。Protect this private key. このキーは共有しないようにしてください。Do not share it.

これらの公開キーと秘密キーは複数の VM とサービスで使用できます。These public and private keys can be used on multiple VMs and services. アクセスする VM またはサービスごとにキーのペアを用意する必要はありません。You do not need a pair of keys for each VM or service you wish to access. 詳細については、公開キー暗号化に関するページを参照してください。For a more detailed overview, see public-key cryptography.

SSH は、セキュリティで保護されていない接続においてセキュリティで保護されたログインを可能にする、暗号化された接続プロトコルです。SSH is an encrypted connection protocol that allows secure logins over unsecured connections. SSH は、Azure でホストされる Linux VM の既定の接続プロトコルです。It is the default connection protocol for Linux VMs hosted in Azure. SSH 自体は暗号化された接続を提供しますが、SSH 接続でパスワードを使用すると、VM はブルートフォース攻撃やパスワードの推測に対して脆弱になります。Although SSH itself provides an encrypted connection, using passwords with SSH connections still leaves the VM vulnerable to brute-force attacks or guessing of passwords. SSH を使用して VM に接続するためのより安全で推奨される方法は、これらの公開キーと秘密キー (SSH キーとも呼ばれます) を使用する方法です。A more secure and preferred method of connecting to a VM using SSH is by using these public and private keys, also known as SSH keys.

SSH キーを使用しない場合でも、パスワードを使用して Linux VM にログインできます。If you do not wish to use SSH keys, you can still log in to your Linux VMs using a password. VM がインターネットに公開されない場合は、パスワードを使用するだけで十分なことがあります。If your VM is not exposed to the Internet, using passwords may be sufficient. ただし、Linux VM ごとにパスワードを管理し、パスワードの最小の長さ、定期的な更新など、優良なパスワードのポリシーと運用を維持する必要があります。However, you still need to manage your passwords for each Linux VM and maintain healthy password policies and practices, such as minimum password length and regularly updating them. SSH キーを使用すると、複数の VM で別個に資格情報を管理する複雑さが軽減されます。The use of SSH keys reduces the complexity of managing individual credentials across multiple VMs.

Windows パッケージと SSH クライアントWindows packages and SSH clients

Azure の Linux VM に接続して管理するには、SSH クライアントを使用します。You connect to and manage Linux VMs in Azure using an SSH client. 通常、Windows コンピューターには SSH クライアントがインストールされていません。Windows computers do not typically have an SSH client installed. Windows 10 Anniversary Update では Bash for Windows が追加され、最新の Windows 10 Creators Update では追加の更新プログラムが提供されています。The Windows 10 Anniversary Update added Bash for Windows, and the latest Windows 10 Creators Update provides additional updates. この Windows Subsystem for Linux では、SSH クライアントなどのユーティリティを Bash シェル内でネイティブに実行したり、それらにアクセスしたりすることができます。This Windows Subsystem for Linux allows you to run and access utilities such as an SSH client natively within a Bash shell. その後は、Linux 用の SSH キー ペアを生成する方法に関するページなど、任意の Linux ドキュメントに従ってください。You can then follow any of the Linux docs, such as How to generate SSH key pairs for Linux. Bash for Windows は開発段階であり、ベータ リリースとして扱われています。Bash for Windows is still under development, and is considered a beta release. Bash for Windows の詳細については、「Bash on Ubuntu on Windows」を参照してください。For more information about Bash for Windows, see Bash on Ubuntu on Windows.

Bash for Windows 以外のものを使用する場合、インストールできる一般的な Windows SSH クライアントは、以下のパッケージに含まれています。If you wish to use something other than Bash for Windows, common Windows SSH clients you can install are included in the following packages:

作成する必要があるキー ファイルWhich key files do you need to create?

Azure では、長さ 2,048 ビット以上の ssh-rsa 形式の公開キーと秘密キーを必須としています。Azure requires at least 2048-bit, ssh-rsa formatted public and private keys. クラシック デプロイメント モデルを使用して Azure リソースを管理している場合は、PEM (.pem ファイル) も生成する必要があります。If you are managing Azure resources using the Classic deployment model, you also need to generate a PEM (.pem file).

次にデプロイメント シナリオとそれぞれのシナリオで使用されるファイルの種類を紹介します。Here are the deployment scenarios, and the types of files you use in each:

  1. ssh-rsa キーは、Azure Portal を使用するすべてのデプロイと、Azure CLI を使用する Resource Manager デプロイメントに必要です。ssh-rsa keys are required for any deployment using the Azure portal, and Resource Manager deployments using the Azure CLI.
    • これらのキーは通常、ほとんどすべての人が必要とします。These keys are usually all most people need.
  2. .pem ファイルはクラシック デプロイで VM を作成する場合に必要です。A .pem file is required to create VMs using the Classic deployment. Azure Portal または Azure CLI を使用する場合、クラシック デプロイでこれらのキーがサポートされます。These keys are supported in Classic deployments when using the Azure portal or Azure CLI.
    • これらの追加のキーと証明書は、クラシック デプロイメント モデルを使用して作成されたリソースを管理している場合にのみ作成する必要があります。You only need to create these additional keys and certificates if you are managing resources created using the Classic deployment model.

Git for Windows のインストールInstall Git for Windows

前のセクションで、Windows 用の openssl ツールを含むいくつかのパッケージを紹介しました。The preceding section listed several packages that include the openssl tool for Windows. このツールは、公開キーと秘密キーを作成するために必要です。This tool is needed to create public and private keys. 任意のパッケージを選択できますが、ここでは Git for Windows をインストールして使用する方法を次の例に示します。The following examples detail how to install and use Git for Windows, though you can choose whichever package you prefer. Git for Windows では、Linux VM を使用する際に役立つ追加のオープンソース ソフトウェア (OSS) のツールとユーティリティにアクセスできます。Git for Windows gives you access to some additional open-source software (OSS) tools and utilities that may be useful as you work with Linux VMs.

  1. https://git-for-windows.github.io/ から Git for Windows をダウンロードしてインストールします。Download and install Git for Windows from the following location: https://git-for-windows.github.io/.
  2. インストール プロセスでは、既定のオプションを使用します (ただし、変更する必要がある場合を除きます)。Accept the default options during the install process unless you specifically need to change them.
  3. [スタート] メニュー > [Git] > [Git Bash] を順に選択して Git Bash を実行します。Run Git Bash from the Start Menu > Git > Git Bash. 次のようなコンソールが表示されます。The console looks similar to the following example:

    Git for Windows Bash シェル

秘密キーの作成Create a private key

  1. Git Bash ウィンドウで、openssl.exe を使用して秘密キーを作成します。In your Git Bash window, use openssl.exe to create a private key. 次の例では、myPrivateKey という名前のキーと myCert.pem という名前の証明書を作成しています。The following example creates a key named myPrivateKey and certificate named myCert.pem:

    openssl.exe req -x509 -nodes -days 365 -newkey rsa:2048 \
        -keyout myPrivateKey.key -out myCert.pem
    

    出力は次の例のようになります。The output looks similar to the following example:

    Generating a 2048 bit RSA private key
    .......................................+++
    .......................+++
    writing new private key to 'myPrivateKey.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:
    

    Bash によってエラーが報告された場合は、昇格された特権で新しい Git Bash ウィンドウを開いてみてください。If bash reports an error, try opening a new Git Bash window with elevated privileges. その後、openssl コマンドを再実行します。Then, rerun the openssl command.

  2. プロンプトに対して、国の名前、場所、組織名などを入力します。Answer the prompts for country name, location, organization name, etc.

  3. 新しい秘密キーと証明書が現在の作業ディレクトリに作成されます。Your new private key and certificate are created in your current working directory. セキュリティのために、秘密キーにアクセス許可を設定して、自分だけがアクセスできるようにする必要があります。As a security measure, you should set the permissions on your private key so that only you can access it:

    chmod 0600 myPrivateKey.key
    
  4. 次のセクションで、PuTTYgen を使用して公開キーの表示と使用を行う方法、および PuTTY を使用して SSH から Linux VM にログインするための秘密キーを作成する方法について詳しく説明します。The next section details using PuTTYgen to both view and use the public key, and create a private key specific for using PuTTY to SSH to Linux VMs. 次のコマンドは、すぐに使用できる myPublicKey.key という名前の公開キー ファイルを生成します。The following command generates a public key file named myPublicKey.key that you can use right away:

    openssl.exe rsa -pubout -in myPrivateKey.key -out myPublicKey.key
    
  5. また、クラシック リソースを管理する必要がある場合は、myCert.pemmyCert.cer (DER でエンコードされた X509 証明書) に変換します。If you also need to manage Classic resources, convert the myCert.pem to myCert.cer (DER encoded X509 certificate). このオプションの手順は、以前のクラシック リソースを管理する必要がある場合にのみ実行します。Perform this optional step only if you need to specifically manage older Classic resources.

    次のコマンドを使用して証明書を変換します。Convert the certificate using the following command:

    openssl.exe  x509 -outform der -in myCert.pem -out myCert.cer
    

PuTTY 用の秘密キーの作成Create a private key for PuTTY

PuTTY は、Windows 用の一般的な SSH クライアントです。PuTTY is a common SSH client for Windows. SSH クライアントには任意のクライアントを使用できます。You are free to use any SSH client that you wish. PuTTY を使用するには、PuTTY 秘密キー (PPK) という追加の種類のキーを作成する必要があります。To use PuTTY, you need to create an additional type of key - a PuTTY Private Key (PPK). PuTTY を使用しない場合は、このセクションをスキップしてください。If you do not wish to use PuTTY, skip this section.

次の例では、PuTTY を使用するためのこの追加の秘密キーを作成します。The following example creates this additional private key specifically for PuTTY to use:

  1. Git Bash を使用して、秘密キーを PuTTYgen で認識できる RSA 秘密キーに変換します。Use Git Bash to convert your private key into an RSA private key that PuTTYgen can understand. 次の例では、既存のキー myPrivateKey から myPrivateKey_rsa という名前のキーを作成しています。The following example creates a key named myPrivateKey_rsa from the existing key named myPrivateKey:

    openssl rsa -in ./myPrivateKey.key -out myPrivateKey_rsa
    

    セキュリティのために、秘密キーにアクセス許可を設定して、自分だけがアクセスできるようにする必要があります。As a security measure, you should set the permissions on your private key so that only you can access it:

    chmod 0600 myPrivateKey_rsa
    
  2. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html から PuTTYgen をダウンロードして実行します。Download and run PuTTYgen from the following location: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  3. [File (ファイル)] > [Load a Private Key (秘密キーの読み込み)] の順にクリックします。Click the menu: File > Load Private Key
  4. 秘密キー (前の例の myPrivateKey_rsa) を見つけます。Locate your private key (myPrivateKey_rsa in the previous example). Git Bash を起動したときの既定のディレクトリは C:\Users\%username% です。The default directory when you start Git Bash is C:\Users\%username%. ファイル フィルターを [All Files (*.*) (すべてのファイル (.))] に変更します。Change the file filter to show All Files (*.*):

    PuTTYgen に対する既存の秘密キーの読み込み

  5. [開く]をクリックします。Click Open. キーが正常にインポートされたことを示すプロンプトが表示されます。A prompt indicates that the key has been successfully imported:

    PuTTYgen に対するキーのインポートの成功

  6. [OK] をクリックしてプロンプトを閉じます。Click OK to close the prompt.
  7. 公開キーは PuTTYgen ウィンドウの上部に表示されます。The public key is displayed at the top of the PuTTYgen window. Linux VM を作成するときに、この公開キーをコピーし、Azure Portal または Azure Resource Manager テンプレートに貼り付けます。You copy and paste this public key into the Azure portal or Azure Resource Manager template when you create a Linux VM. [Save public key (公開キーを保存)] をクリックして、公開キーを自分のコンピューターに保存することもできます。You can also click Save public key to save a copy to your computer:

    PuTTY 公開キー ファイルの保存

    次の例は、Linux VM を作成するときにこの公開キーをコピーして Azure Portal に貼り付ける方法を示しています。The following example shows how you would copy and paste this public key into the Azure portal when you create a Linux VM. 通常、公開キーは新しい VM の ~/.ssh/authorized_keys に格納します。The public key is typically then stored in ~/.ssh/authorized_keys on your new VM.

    Azure Portal で VM を作成する際の公開キーの使用

  8. PuTTYgen で、[Save private Key (秘密キーを保存)] をクリックします。Back in PuTTYgen, Click Save private Key:

    PuTTY 秘密キー ファイルの保存

    警告

    キーのパスフレーズを入力せずに続行するかどうかを確認するプロンプトが表示されます。A prompt asks if you wish to continue without entering a passphrase for your key. パスフレーズは、秘密キーに付属するパスワードのようなものです。A passphrase is like a password attached to your private key. だれかが秘密キーを入手したとしても、キーだけでは認証されません。Even if someone were to obtain your private key, they still would not be able to authenticate using just the key. パスフレーズも必要になります。They would also need the passphrase. パスフレーズを使用しない場合、だれかが秘密キーを入手すると、その人物はそのキーを使用するすべての VM またはサービスにログインできるようになります。Without a passphrase, if someone obtains your private key, they can log in to any VM or service that uses that key. そのため、パスフレーズを作成することをお勧めします。We recommend you create a passphrase. ただし、パスフレーズを忘れた場合、それを回復する方法はありません。However, if you forget the passphrase, there is no way to recover it.

    パスフレーズを入力する場合は、[No (いいえ)] をクリックした後、PuTTYgen のメイン ウィンドウにパスフレーズを入力し、もう一度 [Save private Key (秘密キーを保存)] をクリックします。If you wish to enter a passphrase, click No, enter a passphrase in the main PuTTYgen window, and then click Save private key again. それ以外の場合は、[Yes (はい)] をクリックして、オプションのパスフレーズを指定せずに続行します。Otherwise, click Yes to continue without providing the optional passphrase.

  9. PPK ファイルの保存場所と名前を入力します。Enter a name and location to save your PPK file.

Putty を使用した Linux マシンへの SSH 接続Use Putty to SSH to a Linux Machine

前に説明したように、PuTTY は、Windows 用の一般的な SSH クライアントです。Again, PuTTY is a common SSH client for Windows. SSH クライアントには任意のクライアントを使用できます。You are free to use any SSH client that you wish. 次の手順では、秘密キーを使い、SSH を使用して Azure VM に対する認証を行う方法を示します。The following steps detail how to use your private key to authenticate with your Azure VM using SSH. 他の SSH キー クライアントを使用する場合でも、SSH 接続を認証するために秘密キーを読み込む必要があるという点で、手順は似ています。The steps are similar in other SSH key clients in terms of needing to load your private key to authenticate the SSH connection.

  1. http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html から PuTTY をダウンロードして実行します。Download and run putty from the following location: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
  2. Azure Portal で取得した VM のホスト名と IP アドレスを入力します。Fill in the host name or IP address of your VM from the Azure portal:

    新しい PuTTY 接続の開始

  3. [Open (開く)] を選択する前に、[Connection (接続)] > [SSH] > [Auth] タブをクリックします。秘密キーを参照して選択します。Before selecting Open, click Connection > SSH > Auth tab. Browse to and select your private key:

    認証用の PuTTY 秘密キーの選択

  4. [Open] をクリックして、仮想マシンに接続します。Click Open to connect to your virtual machine

次のステップNext steps

公開キーと秘密キーは OS X と Linux を使用して生成することもできます。You can also generate the public and private keys using OS X and Linux.

Bash for Windows の詳細および Windows コンピューターで OSS ツールを使用できるようにしておくメリットについては、「Bash on Ubuntu on Windows」を参照してください。For more information about Bash for Windows and the benefits of having OSS tools readily available on your Windows computer, see Bash on Ubuntu on Windows.

Linux VM に対する SSH 接続に問題がある場合は、Azure Linux VM に対する SSH 接続のトラブルシューティングに関するトピックを参照してください。If you have trouble using SSH to connect to your Linux VMs, see Troubleshoot SSH connections to an Azure Linux VM.