競馬キュレーションサイトを作るよ!#7

前回はVirtualBox+Vagrantを使い、Windows上でCentOSを起動するところまで行いました。
今回は一般ユーザを作り、パスワードなしでCentOSへログインするところまでを解説します。
rootでCnetOSにログインしているものとします。

スケジュール
1. 各メディアを調査
2. システム構成を決める
3. 開発環境を作る ← 今ここ
4. プロトタイプ作成
5. 実装
6. テスト
7. 公開

言語設定、時間設定

前回説明したCentOSのboxは表示が英語なので、日本語にします。
英語のままでいいのならば、そのままでも構いません。

[root@localhost ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
[root@localhost ~]# localectl set-locale LANG=ja_JP.utf8
[root@localhost ~]# source /etc/locale.conf
[root@localhost ~]# aaa
-bash: aaa: コマンドが見つかりません
[root@localhost ~]#

次に時間も日本時間に合わせます。
こっちはちゃんと日本時間に合わせといた方がいいでしょう。

[root@localhost ~]# timedatectl set-timezone Asia/Tokyo
[root@localhost ~]# date
201979日 火曜日 23:21:52 JST

ユーザ&鍵を作る

現在ログインしているのはrootというユーザですが、rootはシステム上の最高権限者です。
どんなことでも出来てしまうので、いくら自分だけが使う開発環境とはいえ、よろしくありません。
何か致命的なミス(大事なファイルを消しちゃうとか)をすると、システム全体が死にます。
なので、一般ユーザを作ってログインすることにします。

まず新しくユーザを追加します。
私の場合、ユーザIDは「z80a」としました。

[root@localhost ~]# useradd z80a

このユーザにsuコマンドでログインします。

[root@localhost ~]# su - z80a
最終ログイン: 2019/07/09 (火) 23:18:35 JST 10.0.2.2から開始日時 pts/0
[z80a@localhost ~]$

ユーザz80aのホームディレクトリ下に.sshディレクトリを切ります。
ついでに自分以外からはアクセスできなくなる権限を設定。

[z80a@localhost ~]$ mkdir .ssh
[z80a@localhost ~]$ chmod 700 .ssh

ssh-keygenコマンドを実行し、暗号鍵(id_rsa)と公開鍵(id_rsa.pub)を生成します。
3回ほど入力を求められますが、すべて無入力(エンターキーを押すだけ)でOK。

[z80a@localhost ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/z80a/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/z80a/.ssh/id_rsa.
Your public key has been saved in /home/z80a/.ssh/id_rsa.pub.
The key fingerprint is:
57:9b:b2:56:b6:1d:57:fe:c5:65:46:ae:c8:8a:58:76 z80a@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                .|
|               o |
|            .   *|
|           o + *o|
|        S E B o =|
|       + + * o oo|
|      . . + . . .|
|         .       |
|                 |
+-----------------+
[z80a@localhost ~]$

ログイン時にパスワードを求められないよう、公開鍵を認可済み鍵に登録しておきます。

[z80a@localhost ~]$ cp .ssh/id_rsa.pub .ssh/authorized_keys
[z80a@localhost ~]$ chmod 600 .ssh/authorized_keys
デフォルトでRSAという暗号方式になりますが、最近はもっと強固なEd25519が使われることが多いです。
またセキュリティをちゃんと考えるなら、passphraseも空にせず、きちんと設定すべきです。
本番環境ではこの辺りはちゃんとやっときましょう。

rootパスワードなしでsudoを使えるようにする

sudoとは、root以外のユーザがスーパーユーザ(root)として各コマンドを実行できるようにするものです。
方針としては、作成したユーザをwheelグループにし、wheelグループにsudo権限とNOPASSWORDを与えます。
本番環境でこんなことをやってはいけませんが、開発環境なので良しとしてます。

ユーザz80aをグループwheelに追加します。

[z80a@localhost ~]$ usermod -G wheel z80a

z80aユーザを抜けrootになり、visudoコマンドでsudoersファイルを編集します。

[z80a@localhost ~]$ exit
ログアウト
[root@localhost ~]# visudo

viというエディタが立ち上がり、sudoersファイルが読み込まれます。
下のように編集します。

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

## Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
# %wheel  ALL=(ALL)       ALL

## Same thing without a password
%wheel        ALL=(ALL)       NOPASSWD: ALL

このvi、けっこう癖が強いです。
Windowsのメモ帳のようには操作できません。
でもLinuxでは最初から標準で入ってるエディタで、これを使えるようになると設定が楽になります。
使い方を解説したページを紹介しておきます。

viコマンドについて詳しくまとめました 【Linuxコマンド集】
まずは超基本だけ! viの基本的な使い方【Linux入門】

暗号鍵を使いログインする

ssh-keygenで生成した暗号鍵(id_rsa)を使うと、パスワードなしでCentOSへログインできるようになります。
それにはまずCentOS内の暗号鍵をWindowsに持ってくる必要があります。
Winodwsからは直接CentOSのファイルにアクセスすることはできません。
そのため共有ディレクトリ経由で暗号鍵ファイルをやり取りすることにします。

cp /home/z80a/.ssh/id_rsa /vagrant

Windows側は以下のディレクトリになります。
c:\data\project\

PuTTYでこの暗号鍵を扱えるように変換します。
PuTTY Key Generator(実行ファイル名はputtygen.exe)を立ち上げ、「Load」ボタンから先ほどの暗号鍵ファイル(id_rsa)を読み込みます。
ロードに成功すると、以下のようになります。

「Save private key」ボタンで変換した暗号鍵ファイルを保存しておきます。

PuTTYを起動し、以下のように設定。

HostName:127.0.0.1
Port:2222

(Category:Connection>Data)
Auto-login username: z80a

(Category:Connection>SSH>Auth)
Private key file for authentication: (変換した暗号鍵ファイルを選択)

これでユーザz80aでパスワードを入力せずログインすることができます。

まとめ

今回はCentOSで一般ユーザを作成し、暗号鍵を使いパスワードなしでログインするようにしました。
次回は開発に必要なアプリケーションをインストールします。

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

note.user.nickname || note.user.urlname

絶対に世のため人のためにはせず、くだらないことに使わせて頂きます。

धन्यवाद
1

Z80A

見た目は大人、中身はZ80Aくらい。 職業:インチキプログラマ

競馬キュレーションサイトを作るよ!

Laravelを使って競馬情報収集システムを構築します。
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。