LoginSignup
3
0

More than 5 years have passed since last update.

SBクラウド・Alibaba CloudでセキュアなECS環境をユーザーデータを利用して雑に作成する

Last updated at Posted at 2017-04-24

概要

SBクラウドのAlibaba Cloudで提供されている仮想サーバーECSでは、現状SSH公開鍵認証での初期構築がサポートされておらず、パスワード認証によって環境が構築されます。これはセキュアじゃないので、「インスタンス自動化設定フレームワーク」によって初期設定を行うサンプルです。

インスタンス自動化設定フレームワーク・・・要するにcloudinitなんですが、どうにも呼び名にはいろいろあるらしいです。コンソールでは「ユーザーデータ」ですね。

参考:Alibaba Cloudドキュメント インスタンス自動化設定フレームワーク

用意するスクリプト

こんなの用意します。

cloudinit
#!/bin/sh
/bin/sed -ie 's/PasswordAuthentication yes/PasswordAuthentication no/' 
/etc/ssh/sshd_config
systemctl restart sshd
echo 'ssh-rsa あなたのSSH公開鍵' | tee -a /root/.ssh/authorized_keys

sshd_configのPasswordAuthenticationをoffにして再起動し、rootのauthorized_keysに公開鍵を追記するシェルスクリプトです。

コンソールからの設定

ECSコンソールからインスタンス作成時、「ユーザーデータ」の項目に貼り付けます。

スクリーンショット 2017-04-24 23.32.44.png

サイズが16kBを超えないように、という制限がありますので注意が必要ですが、SSHキーくらいなら絶対超えません。とりあえずUbuntuとCentOS辺りならこれでOKのはず。

インスタンスを起動

あとは普通にインスタンスが起動してくるのを待つだけです。出来上がったECSにSSHキーでログイン出来ることを確認してください。また、存在しないユーザー(root_testとか)でログインを試みて、「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」とか言われること(パスワードプロンプトが返ってこないこと)を確認してください。

雑に簡単にセキュア

とりあえず、最も典型的なユーザーデーターの使い方を雑に書いてみました。実際、クラウドプラットフォームの多くはこの処理と同じように、cloudinitの仕組みを用いてSSHキーを設定していますし、ユーザーデータの挙動を確認するにも丁度良いかなと思います。ユーザーデータは外部からのincludeやAPIでの設定もできて、インフラのコード化も進められますし、是非活用したいですね。

てゆっか、速くコンソールでSSHキー管理できるようにならないかなぁ〜。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0