お名前vps(kvm)上のCentOS7にシリアルコンソールでssh接続する方法
接続できない...
vpsサーバのネットワークが不調になった時とか、ssh接続できなくなった状況だといつも管理画面でブラウザ上からコンソールにアクセスしていた。
ただこのブラウザ上のコンソール、コピペができなかったりしてすごく使い勝手が悪い。
できればブラウザからじゃなくて、ターミナルから操作したい。
そこで、シリアルコンソール接続でターミナルからssh接続する方法があるらしいのでやってみた。
なんだ意外と簡単に設定できるじゃん、と思ったら、
$ssh hogehoge Last login: Sat Jul 16 22:48:18 2016 from 106.161.167.199 [Enter `^Ec?' for help]
ここで操作不能になった。ログインに遷移しない...
しかもC-cが効かなくてプロセスも落とせない...
設定が簡単とか、そんなうまい話はなかったのだ。
いざ、解決の旅へ
説明通りやっているのに、なぜログインできないのか。
調べてみると、どうもサーバ側でシリアルコンソール接続の設定をしないとダメらしい。
いろいろやってみた結果、このサイトの方法で解決できた。
まず、以下のコマンドで設定ファイルを編集して、新規作成する仮想端末ttyS1とserialの対応を行う。
編集したのは以下の4行。
$ vi /etc/default/grub ~ GRUB_TERMINAL_OUTPUT="serial console" GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600 console=ttyS1,9600" ~ GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
そして反映。
$ /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
次にgettyの設定を行う。
この辺りの処理は調べていくとsystemdがどうとかと書いてあったのだが、よくわからなかったので後で勉強することにして、まずは無心にコマンドを叩く。
雛形をコピって、ログインシェル振り分けるところにシンボリックリンク貼って、デーモンにサービス追加して、最後に自動起動設定してる。多分。
$cp /lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS1.service $ ln -s /etc/systemd/system/serial-getty@ttyS1.service /etc/systemd/system/getty.target.wants/ $ systemctl daemon-reload $ systemctl start serial-getty@ttyS1.service $ systemctl enable serial-getty@ttyS1.service
ここまで出来たら、最後に以下のファイルを編集して、ttyS1の存在を教えてあげる。
このsecurettyはrootでログインできる端末のリストらしい。
$ vi /etc/securetty ~ ttyS1 ~
これで設定は完了。
$ shutdown -r now
サーバを一度再起動して、ログインを試みる。
$ ssh hogehoge Last login: Sun Jul 17 00:52:35 2016 from 106.161.167.199 [Enter `^Ec?' for help] CentOS Linux 7 (Core) Kernel 3.10.0-327.22.2.el7.x86_64 on an x86_64 yukineko login:
できた!!
こんな面倒な設定するだなんて、公式のどこにも書いてなかったよ...
新たなる問題
今度はシリアルコンソール接続を終了できなくなってしまった...誰か助けて...