---
title: "AzureKeyVaultにBastionで使用するSSH秘密鍵を登録する | grasys blog"
url: "https://blog.grasys.io/post/sakai/regist_bastion_ssh_secret_key/"
description: "初めまして。 2021年6月に入社した部内では一番下っ端エンジニアのsakaiです。 入社してすぐにAzure環境に関連する業務に携わらせていただいており、 入社時はほとんどAzureに関して知識が無かったんですが、 業務を通してある程度知識をつけることができました。 そんな中で遭遇した問題と、それを解決する方法を今…"
---

# AzureKeyVaultにBastionで使用するSSH秘密鍵を登録する

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[sakai](/authors/sakai/)
-   公開日：2022年3月7日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#Azure](/tags/azure/)[#Azure Key Vault](/tags/azure-key-vault/)[#Bastion](/tags/bastion/)

![AzureKeyVaultにBastionで使用するSSH秘密鍵を登録する](/_astro/og-image.DDSiu2Ny_XHpDd.webp)

初めまして。 2021年6月に入社した部内では一番下っ端エンジニアのsakaiです。

入社してすぐにAzure環境に関連する業務に携わらせていただいており、 入社時はほとんどAzureに関して知識が無かったんですが、 業務を通してある程度知識をつけることができました。

そんな中で遭遇した問題と、それを解決する方法を今回ご紹介したいと思います。

## 行ってた内容

私が行っていた業務ではLaravelで構築されたアプリケーションをAzure環境に構築するというものでした。  
上記の構築にあたりVMを一台用意し、そのVMを使ってAppServiceやMySQLに接続したりしておりました。

VMにSSH接続する際はいつも自身のPCからSSH接続することが多かったのですが、Azureのportal上からもアクセスできるようにする必要があり、その接続する機能としてBastionを用いておりました。

そしてBastionでVMに接続する際に用いていた認証方法ですが、AzureKeyVaultに登録したシークレットの値を用いて接続するという方法です。

シークレットの値には`-----BEGIN RSA PRIVATE KEY-----`から始まる皆さんご存知の秘密鍵の値を登録するのですが、登録の際にある問題が発生しました。

## シークレットに改行された文字列登録ができない

皆さん御存知の通り`-----BEGIN RSA PRIVATE KEY-----`始まりの秘密鍵は複数行の文字列となっております。

Bastionでシークレットの値を参照するときも、正しい値でないと`-----BEGIN RSA PRIVATE KEY-----`から始まり、`-----END RSA PRIVATE KEY-----`で終わるものを選択しろと怒られてしまいます。

しかし、AzureKeyVaultにportal上で改行を含んだ値を登録すると、なんと一行にまとめられてしまうのです。

![Azure Key Vaultに改行を含む秘密鍵を登録できず困る人物のイラスト](/_astro/01-08-369a57bc.Ds249bfk_1KWm3n.webp)

しかし、Bastionでは改行された秘密鍵の値でないとSSH接続できません。

![秘密鍵の登録方法をパソコンで調べる人物のイラスト](/_astro/02-09-14dc0f0d.9DGZhR-a_1q1dK9.webp)

「じゃあどうやって登録しろと。。。」

そこでGoogle先生で調べるとしっかりとドキュメントが用意されてました。

## 複数行の値は`az keyvault secret set`で反映

まずazコマンドが実行できて、AzureKeyVaultに対してコマンド実行できる環境に秘密鍵が記載されたtxtファイルを用意します。

Plain textcontent\_copy

```
user@vm-name:~$ pwd
/home/user
user@vm-name:~$ ls secretfile.txt
secretfile.txt
```

そして、`az keyvault secret set`コマンドでファイルに記載した値を反映します。

Plain textcontent\_copy

```
user@vm-name:~$ az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "MultilineSecret" --file "secretfile.txt"
```

そうすると実行結果がJSON形式で返ってきて、そのvalueの中に先程用意した秘密鍵の値を記載した内容が入っています。

Plain textcontent\_copy

```
{
  "attributes": {
      ・・・中略・・・
  },
  ・・・中略・・・
  "value": "-----BEGIN RSA PRIVATE KEY-----\n
・・・
\n-----END RSA PRIVATE KEY-----\n\n"
}
```

上記の結果、Bastionでシークレットの秘密鍵を参照でき、無事SSH接続ができるようになりました。

## 最後に

わかってしまえば簡単な手順で設定ができるのですが、ほとんどAzureに関する知識が無い人間からしたら、この問題に最初ぶつかった時はかなり解決に時間を有しました。  
また、Azureに関する記事は他のクラウドに比べるとまだ少ない気がするので少しで同じような悩みを持つ方の助けになれればと思います。

## 参考ドキュメント

[https://docs.microsoft.com/ja-jp/azure/key-vault/secrets/multiline-secrets](https://docs.microsoft.com/ja-jp/azure/key-vault/secrets/multiline-secrets)

## この記事を書いた人

[![](/_astro/sakai.B63Lq1Ei_Z2odnRE.webp)](/authors/sakai/)

### [sakai](/authors/sakai/)

sakaiのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/sakai/)