3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

cloud-initでSSHのポート変更と公開鍵の設定をする(AWS編)

Last updated at Posted at 2021-10-04

※cloud-initの機能はクラウドサービスやOSによって使える機能が微妙に異なっていたりするので、ここではAWSのAmazon Linux 2を前提としますが、他の環境でもだいたい応用できるかと思います。

EC2でインスタンスを立てる際に「SSHのポート変更と公開鍵の追加設定もcloud-initでできたらなー」「Ansible使うほどじゃないんだよなー」と色々調べてたらどうにかなったというお話です。

背景

  • Terraformなどで自動化してEC2インスタンスを立てる
  • インスタンスを立てる際に、SSHのポート変更と鍵の追加も自動でやりたい
  • インスタンス作成時にキーペアを設定できるが(ひとつしか設定できないので)、複数(メンバー全員分)の公開鍵を追加したい
  • Ansibleは使わない1

やり方

#cloud-config
ssh_authorized_keys:
  - ssh-rsa AAAAB3Nza...
  - ssh-ed25519 AAAAC3Nza...

runcmd:
  - sed -i -e 's!#Port 22!Port 12345!' /etc/ssh/sshd_config
  - systemctl restart sshd.service

こんな感じでいけました。

鍵の追加

ssh_authorized_keysなんて設定があるんですね。
これを設定するとec2-userauthorized_keysに全部追加されました。

SSHポートの変更

SSHのポート変更については、そのような設定はないようなので、runcmdsedを叩いて設定を書き換えることにします。
この辺はディストリビューションなどによって変わってくることもあるかもしれないので、確認の上調整してください。

あとはセキュリティグループや各種ファイアウォール等のポート変更も忘れないようにしましょう。

(参考)個別にユーザを作る場合

ec2-userにみんなの鍵を追加するのではなく、個別にユーザを作る場合はこんな感じです。

#cloud-config
users:
  - default
  - name: ansible
    gecos: ansible
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    ssh_pwauth: False
    ssh_authorized_keys:
      - ssh-rsa AAAAB3Nza...

usersに個別のユーザ設定を並べて、その中でssh_authorized_keysを設定してあげます。

本題とは関係ありませんが、users設定を使うときに最初のdefaultを忘れるとデフォルトユーザが作成されなくなるので注意が必要です。
この場合だとansibleユーザだけが作成されて、普段ならあるはずのec2-userは作成されなくなります。たぶん(やったことないからわからない)。
先頭にdefaultを追加することで、ここに書いてあるユーザ+いつも自動作成されるデフォルトユーザの両方が作成されるようになります。

  1. 別にAnsibleが嫌いなわけではないです。今回は他にAnsibleでやる作業もなかったので、cloud-initだけでゴリ押せないかなと挑戦してみただけです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?