Alibaba Cloud ECSのSSHキーペア認証を使う

# SSH Key Pair認証が設定できるようになった

ついに、Alibaba Cloud(SBクラウド） ECSでもSSHキーペアによる仮想サーバー環境の構築ができるようになりました。もちろん、仮想サーバーが起動してから、SSHキーペア認証を設定することはできるんですが、初期状態がパスワード認証というのはセキュリティ的に嬉しくなかったので、これは是非使いたいですね。

> [SSHキーペア認証リリースのお知らせ](https://www.sbcloud.co.jp/2017/05/16/ssh/)

早速、雑に使い方を紹介したいと思います。

# キーペアの使い方

基本的なキーペアの使い方は以下のような感じになります。

- キーペアを管理する：ECSコンソールにキーペア管理メニューが追加されています。
- キーペアを作る：RSA 2048bitでキーペアを作成することができます。
- キーペアをインポートする：既存の公開鍵を読み込んで使うことができます。
- キーペアを使ってECSを作る：ECSコンソールからのECS購入画面で、セキュリティ設定として「キーペア」が選択できます。
- キーペアをECSに割当る・割当を解除する：キーペア管理メニューから、キーのバインド、アンバインドができます。
- キーペアを削除する：不要になったキーペアは削除することができます。

詳しくは、Alibaba Cloudのドキュメントを参照。

> [ECS - SSHキーペアについて](https://jp.aliyun.com/help/doc-detail/51792.htm)

# SSHキーペアの管理と作成、インポート

まずは基本的なキーペアの管理について。キーペア管理はECSコンソールにメニューが追加されています。

![スクリーンショット 2017-05-16 21.52.16.jpg](https://qiita-image-store.s3.amazonaws.com/0/115338/78500124-910b-f680-f1d7-cca7010b8b55.jpeg)
左下のほうに「キーペア管理」メニューが出来ています。最初にすることは、右上の「キーペア作成」です。

キーペアの作成方法としては、（１）コンソール画面上で作成する（２）既存のキーペアを読み込む、の２つの方法があります。

<img width="676" alt="スクリーンショット 2017-05-16 21.52.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/115338/38ed44e8-ce3b-7e4d-e8b1-2d124177ea63.png">

キーペアには「キーペア名」が設定できます。これがキーペア管理上の識別子となっています。
コンソールで作成できるキーペアは「RSA 2048bit パスフレーズ無し」となっています。作成後、１度だけ、秘密鍵ファイルがダウンロードできますので、**無くさないように保存しておきましょう**。

![スクリーンショット 2017-05-16 21.54.01.jpg](https://qiita-image-store.s3.amazonaws.com/0/115338/1745d775-a19b-af0f-51db-ca36895dbb00.jpeg)

既存の公開鍵を読み込むこともできます。この場合、読み込める暗号化方式は**RSAに限らず、ECDSAやED25519といった楕円曲線暗号キーも利用可能です**。もちろん、こちらで読み込むキーペアについては、パスフレーズ付きの秘密鍵も使えますので、インポートしたほうがセキュリティはより高い運用ができると思います。

![スクリーンショット 2017-05-16 22.12.16.jpg](https://qiita-image-store.s3.amazonaws.com/0/115338/46f71d7e-8a58-ce74-72e0-97f6d05e6605.jpeg)

キーを作成（読み込み）すると、キーペア管理画面にリストアップされます。キーペアはリージョン毎の管理となりますので、必要なリージョンにはキーペアを適宜設定する必要があります。ここまでの一連の流れを見る限り、基本的には他のクラウドサービスのキーペアのオペレーションと遜色無いイメージだと思います（EC2をかなり意識している雰囲気はありますが）。

# キーペアを用いたECSの作成

作成したキーペアを使ってECSを構築することができます。ECSコンソールの購入画面で、セキュリティ設定の選択肢に「Key pairの設定」が追加されています。

<img width="1029" alt="スクリーンショット 2017-05-16 21.57.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/115338/68eac69f-04c2-1fc6-8ecc-e6792359c8e4.png">

バックワードコンパチビリティとしてパスワード認証も使えるようにはなっていますが、やはりキーペア認証がセキュリティ面からもお勧めです。これ以外は特に気にする必要はありません。普通にECSが起動してくるのを待つだけです。

作成されたECSには、「キーペア作成」で作成・ダウンロードした秘密鍵ファイル（*.pemファイル）か、公開鍵をインポートした既存の秘密鍵でログインできます。

`ssh -i /Users/user/Desktop/Test-SSH-Key.pem 47.74.99.99 -l root`

ユーザー名はrootです。「-i」オプションで秘密鍵ファイルを指定します。ちなみに、ここではデスクトップに保存した秘密鍵ファイル（Test-SSH-Key.pem）を指定していますが、**事前にこのファイルのパーミッションを読み取り専用にしておかないと**sshコマンドに文句を言われます（chmod 600 *.pem）。

あとは普通にログイン可能です。authorized_keysファイルに、公開鍵が設定されていることが確認できると思います。

# キーペアのバインド・バインド解除

キーペアに関する操作の中で、Alibaba Cloud ECSの独特なところとして、キーペアとECSとのバインド・バインド解除ができるところがあります。これはECS内で動いている管理プログラム（/usr/sbin/aliyun-service)によって実現されている機能ですので、このサービスを停止していると操作できません。他方、このバインド・バインド解除によって、キーの紛失時のリカバリやログイン可能なキーペアの切り替えが容易にできますので、運用性の向上とセキュリティ強化を実現できます。

![スクリーンショット 2017-05-16 22.12.36.jpg](https://qiita-image-store.s3.amazonaws.com/0/115338/16e2ccaa-c58a-8358-af14-834f6d9526d7.jpeg)

バインド・バインド解除は、キーペア管理画面でキーペア毎の操作として実行できます。バインド・バインド解除するECSを一覧から選択して操作することが可能です。authorize_keysファイルへの公開鍵レコードの追加・削除が行われて、SSHキーペアでのログイン可否が制御できます。

# キーペアの削除

不要になったキーペアはキーペア管理画面から削除可能です。ただし、ECSにバインドされているSSHキーも削除操作は可能となっていますので、削除する前にはバインド状況を確認して、すべてのECSをバインド解除してから削除する必要があります。

# 実運用上の留意点

以上のように、Alibaba Cloud ECSでもSSHキーペアによる認証がコンソールから利用可能になっています。基本的な操作感や使い勝手は問題無く、普通に使えるものになっています。ECDSA等の公開鍵もインポート可能ですので、楕円曲線暗号好きな方には嬉しいかと思います。

実運用上、このSSHキーは、「１インスタンス１キーペア」しか指定できないので、複数人でアカウントを（RAM等を利用して）共有するようなケースでは、秘密鍵の取扱で注意が必要です。ただ、バインド操作が可能なので、例えば特定の秘密鍵を持っている人にサーバーの操作権限を与えるような、凝った運用もできると思います。

プロダクションで使うことを考えると、最終的には非管理者ユーザーでオペレーションを行うことになるかと思いますが、クラウドサービスの初期設定として強固なセキュリティ設定が適応できるのは便利です。是非活用したい新機能です。