AmazonLinuxのauthorized_keysが消える?
相変わらずAMIと悪戦苦闘。自分で自分を絞めあげている気がするけれど。セキュリティとかどーのこーの。
今回の作業中、なんだか危険なニオイがするものを見つけたのでメモ。表題のとおりですけれど。
photo credit: hisashi_0822
というのも、Amazon Linuxが今月正式版リリースされました。今回のプロジェクトで使うAMIを作っていたのですが、いつも SSH でつなぐユーザを ec2-user(デフォルト)からほかのユーザに変えているんです。そのため、ユーザを作って、ec2-user が持ってるauthorized_keys を作ったユーザに配置する、なんてことをしています。
1 2 3 4 5 6 7 8 | [ec2-user@hogehoge ~]$ sudo su - [root@hogehoge ~]# useradd testuser [root@hogehoge ~]# su - testuser [testuser@hogehoge ~]$ mkdir .ssh [testuser@hogehoge ~]$ chmod 700 .ssh [testuser@hogehoge ~]$ exit [root@hogehoge ~]# cp /home/ec2-user/.ssh/authorized_keys /home/testuser/.ssh/ [root@hogehoge ~]# chown testuser:testuser /home/testuser/.ssh/authorized_keys |
上のコマンドのようにして、testuser をログインユーザにする、なんてことをしています。
その後もいろいろ設定して、さあAMI登録しよう、と ec2-bundle-vol コマンド>ec2-upload-bundleコマンドのコンボをやって、S3にアップし、AMI Registする。いったん設定したインスタンスを破棄して、登録したAMIで起動し直します。
するとさっき作った testuser の authorized_keys がそっくり消えている!!というかログインできない!
1 2 | > ssh -i aws-key testuser@ec2-xxx-xxx-xxx-xxx.amazonaws.com Permission Denied (Public key) |
こんな感じ。testuserをec2-userに変えれば行けるんだけど・・・なんでだろう。とググってみると、どうやらAMI公開するときのマナーとして、他ユーザの authorized_keys を起動時に消しておきましょう!なんていうルールがあるっぽい。ハタ迷惑極まりない!!
いやまあ気持ちはわかるんだけどさー、こういう運用している時もあるんだし、消さない設定とかないのかなぁ。そもそもこの現象、Amazon Linuxのβ版までは起こらなかったはず。正式版からこういうルールが生まれたのかなぁ・・・。
うーん、まいった。
さらに調べてみると、公開鍵・秘密鍵の設定系はことごとく消すらしい。
1 2 3 4 | [testuser@hogehoge ~]$ ssh-keygen -t rsa ...公開鍵を作ってみる... [testuser@hogehoge ~]$ touch .ssh/config ...ssh用設定ファイルを作ってみる... |
として、.ssh 内に id_rsa と id_rsa.pub 、SSH設定ファイルを作った状態で AMI 登録し、インスタンスを起動してみると、configだけ残る!! なんじゃそりゃ!?
仕方ないから、ちょっち強引だけど、インスタンス起動時に authorized_keys を ec2-userからコピーするやり方を試してみるかなぁ。それか作った設定ファイルをいったん tar化して残しておき、インスタンス起動時にそれを解凍するか。
っていうか実運用してる今のインスタンス大丈夫だろうか。もし起動してもログインユーザが使えなかったらヤバいなぁ・・・。もしこの問題を回避できる策を持ってる方がいましたら、ご一報いただけると助かります。