CrystalSnowman.com

あなたの時間節約につながる情報を提供します

MariaDB mysqlユーザを作成して公開鍵でOSにログインする方法

ftp image

mysqlユーザを作成してOSにssh公開鍵でログインできるようにしました。ftpなどでファイル一覧を確認できるようになるので便利です。

環境について

このサイトのサーバで行いましたが、環境はOSはCentOS7、Webサーバはnginx、DBはmariaDBです。
mariaDBのサービス名はmariadb.serviceですが、ユーザ名、プロセス名はmysqlです。
mysqlのユーザ名でCentOSに公開鍵でログインできるようにしました。

方法

公開鍵設定の流用

実はすでに別のユーザを作成しており、そのユーザで公開鍵認証が出来るようにしていました。そのためその公開鍵設定を流用します。
ユーザごとに公開鍵の設定を行うのは手間なので、統一したいと思ってです。

ちなみに公開鍵の作成方法は以下を参考にしました。
SSH接続の設定変更方法|さくらインターネット公式サポートサイト

mysqlユーザ用のホームディレクトリ作成

mysqlユーザ用のホームディレクトリを作成します。
これはmysqlユーザでCentOSにログイン時のカレントディレクトリになります。
mariadbのインストール先やデータファイル保存先のことではありません。

「/home/mysql」というディレクトリを作成し、ホームディレクトリとなるようにします。

3行目で4行目の「usermod」がエラーとなるのでmariadbのサービスを止めます。

公開鍵設定のコピー

すでに公開鍵でログインできているユーザの設定をmysqlにコピーします。

4行目以降でbashの設定もコピーし、ログイン時にbashが実行されるようにしました。

SELinuxの設定

しかし公開鍵をコピーしただけではログインできません。

「.ssh」の状態をこのコマンドで調べてみます。

「object_r:」の後が「home_root_t」となっている場合ログインできないはずです。

公開鍵でログインできるユーザを確認してみます。

「object_r:」の後が「ssh_home_t」となっています。

監査ログも見てみます。

「scontext(sshd_t) が tcontext(admin_home_t) の tclass(file) の { read } を拒否した。」という意味のようです。

次のコマンドでsshd_t が file として read できるラベル「ssh_home_t」を付けます。

もう一度確認してみます。

これで公開鍵でOSにログインできるようになると思います。

参考情報

sshd_t が read できる file のラベル一覧はこちら

たくさん出ます。

sshd_t が ssh_home_t を読み取れるか確認してみます。

大丈夫のようです。

ftpでログインしてみました

mysqlユーザでデータファイルの保存場所にアクセスしてみました。
ftp image

今回の記事の参考資料

参考にさせていただいたサイト

SELinuxが有効な環境でSSH公開鍵認証を使う | 2done.org

このサイトのおかげでコピーした公開鍵設定でログインできるようになりました。mysqlだけでなく、nginxユーザでもログインできるようにしました。

まとめ

mysqlユーザで公開鍵でログインできるようになると、安全にftpが使用できます。ftpが使用できると簡単にディレクトリ構造やファイルを確認できるようになります。当然nginxユーザでも同じことができるのでお勧めです。


Top