2016-10-16 ServersMan@VPSで借りてるサーバーが飛んだので、復旧作業メモ
昨日のyum updateの件です……。
◆ [Linux] 復旧メモ
まず、コントロールパネルから、「サーバーの初期化」をしました。
OS/パッケージはそのまま(CentOS 7 64bit/シンプルセット)
さようなら今までのデーター……w
しばらくするとrootで入れるようになります(ssh)
まずは、さっくりアップデートをしてしまいます。
昨日これでクラッシュしたので、少しトラウマですが。
yum update
これで一括……と思ったら
Error: systemd conflicts with initscripts-9.49.17-1.el7_0.1.x86_64
死ね!
調べたらyum updateでエラー「Error: systemd conflicts with initscripts」だとかCentOS7 yum update 後、VPSサーバーにアクセスができなくなった-FAQ
これかぁ……(;´Д`)
と言う訳で、回避策として、/etc/yum.confにinitscriptsのupdate拒否を書く
/etc/yum.conf
exclude=initscripts*
……これでもNetworkManagerのインストールを行っていると駄目らしい。制限多すぎるよ……(;´Д`)
と思ったら、すでに書いてあった……だと!?
コンフリクトするなら消してしまえw
yum erase initscripts-9.49.17-1.el7_0.1.x86_64
無事、帰ってこなくなりました(笑)
と言う訳で、サーバー初期化からやり直し。
逆に、/etc/yum.confに書いてある、exclude=initscriptsを消してみたらどうだろう……。
と言う訳で、テスト。
……
systemd:Caught, dumped core as pid 705.
systemd:Freezing execution.
あっ(察し
[root@dti-vps-srv ~]# reboot
Failed to start reboot.target: Connection timed out
Failed to open /dev/initctl: No such device or address
Failed to talk to init daemon.
あ。これ、昨日シャットダウンするときに出たエラーと一緒だ(;´Д`)
さて、どうしようかな……。
とりあえず、サーバー初期化からやり直し。
……完全仮想化環境に引っ越ししたくなってきました・゜・(ノД`)・゜・
systemdも引っかかるので、それも/etc/yum.confに書き足し
exclude=initscripts* systemd* vzdummy-systemd*
これでどうだ!(笑)
……依存関係でダメなのが増えたー!(笑)
おとなしく、exclude=initscripts*だけにして
yum --skip-broken update
しますか……。
Error: Multilib version problems found. This often means that the root
マジでー……
色々試してみる。
/etc/yum.confに
exclude=initscripts* systemd* vzdummy-systemd* util-linux* rsyslog* rpcbind* dracut* procps-ng* cyrus-sasl* libmount* libuuid* libblkid* kmod*
これでどうだぁぁぁぁーーーーー(笑)*1
とりあえず、目立ったエラーもなくComplete!
やっほい! と言う訳で、reboot。
journalctl -rで確認したら、多少気になるエラーは出ていますが、まぁこれなら使えるだろ。
と言う訳で、セットアップを開始(笑)
まずは、ホスト名を変更します。
/etc/hostnameの書き換えで行けるかなぁと思ったら、無いであんの。
hostnamectl set-hostname ホスト名
で書き換え。
Failed to issue method call: Access denied
とか言われますが、気にしない。
コンソールは書き換わらないので、ここで一回リブート(めんどくせぇw
無事書き換わりました。癖がありすぎるね。このサーバーさんは。
次。netstatとか無いと地味に困るので、使うネットツールをインストールします
yum install net-tools
開いてるポートを確認。
うん、個人的には、いらない物がモサッと走ってる。
メモリーも少ないので止めてしまいます。
systemctl stop httpd
systemctl disable httpd
systemctl stop ajaxterm
systemctl disable ajaxterm
systemctl stop xinetd
systemctl disable xinetd
お。ajaxtermは削除されないので、直接消してしまいましょう。
cd /etc/systemd/system/multi-user.target.wants
mv ajaxterm.service .ajaxterm.service
systemctl daemon-reload
ここで、念のため一度reboot。
無事、すっきり環境に。
次に、sshdの設定です。
まずは、アクセスコントロールをつけます。怖いので。
お約束ですが、一応。
/etc/hosts.denyに次の行を追加(全拒否)
ALL: ALL
/etc/hosts.allowに次の行を追加
sshd: .jp 127.0.0.1 その他許可したいIPリスト
これで、.jpじゃないドメインとIPリスト以外からのアクセスは拒否されるようになります。
IPv6アドレスは[]で囲んでやる必要があるのかな?
これでアクセス制限は完了です。
次。sshでrootログインしてるので(汗)これを何とかします(笑)
その前に、rootパスワードを変えてしまいます。
passwd
ユーザー作成。
adduser ユーザー名
passwd ユーザー名
別の端末を使って、リモートからユーザーでログイン+rootになれたことを確認したら、sshdのroot直ログインを禁止します。
/etc/ssh/sshd_config の「#PermitRootLogin yes」の次の行当たりに、
PermitRootLogin no
と書き、systemctl restart sshd。
rootで入れないこと、ユーザーで入れることを確認しておきましょう。
次に、ユーザーが公開鍵でログインできるように設定します。パスワード使いたくないですしね。
まず、su - ユーザー名でユーザーに移動。
mkdir .ssh; chmod 700 .sshで.sshディレクトリを作成。
次に、~/.ssh/authorized_keysに、公開鍵を書き込みます。
これで公開鍵でログインできるようになりました。試しておきましょう。
次に、文字コードをLANG=Cからja_JP.UTF-8に変更しておきます。
localectl set-locale LANG=ja_JP.UTF-8
localectl
変更されていることを確認しました。
現状では、sshdは22番ポートじゃ無くて、変なポート(笑)で立ち上がっています。
sshdそのものを22番ポートにするのは、「いざというときにパスワード認証でログインできない」のと、「あんまりsshdそのものを信用していない」ので、tcpserver経由で起動するようにします。
具体的なやり方は、Linux関連/sshdをtcpserver経由で動かす - いつきメモを参照。
次。tinydnsを設定します。
具体的なやり方は、Linux関連/tinydnsを使う - いつきメモを参照。
ログを物理ディスクに取るようにします。
mkdir /var/log/journal
systemctl restart systemd-journald.service
systemctl restart rsyslog.service
*1 依存関係があると言われた物を端から順に放り込んだ
水樹奈々主演で実写映画化だっw
お疲れ様。なむ。 <br>