RockyLinux8 vps環境設定2) ユーザ追加

RockyLinux8 vps環境設定1) TeraTermからログインするまで
https://qiita.com/naga_kt/items/f8e7fa256a60b63e97b3
の続き。WebArena Indigo(RockyLinux8.4)及びKagoya(RockyLinux8.5)での環境設定について述べる。

　デフォルトのユーザ名、ディレクトリ名では使いにくいので新しいユーザを設定する。
　TeraTermからデフォルトユーザとしてログインして以下を行っていく。

## ユーザの追加
　デフォルトのユーザ（WebArena Indigoではrocky、Kagoyaではcloud-user）以外に新たなユーザを追加する。
　useraddでユーザを追加して、passwdでパスワードを与える。
　useraddで以下のように行なった。

~~~linux
# cd /home
# useradd -d /home/xxxxxxxx -g users xxxxxxxx
$ ls -lrt
total 0
drwx------   3 cloud-user   cloud-user 4096 Sep 14 09:00 cloud-user
drwx------   2 xxxxxxxx   users      4096 Sep 14 10:54 xxxxxxxx
~~~

　オプション-dは追加ディレクトリ名であり、ユーザ名と同じにした。
　オプション-gではグループ名を指定した。
　passwdで以下のように行なった。

~~~linux
# passwd xxxxxxxx
Changing password for user xxxxxxxx.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
~~~

　ディレクトリの設定は751になるようにしておく。

~~~linux
# cd /home
# chmod 751 xxxxxxxx
~~~

## ユーザに管理者権限を与える

　新しく作ったユーザに管理者権限を与える。そうすればsudoをパスワード入力なしに使うことができる。

　ユーザの権限が指定されている/etc/sudoersをvisudoコマンドで編集していくが、その前にバックアップを取っておく。

~~~linux
# cd /etc/
# ls -lrt sudoers
-r--r-----. 1 root root 4328 Nov  4  2021 sudoers
# cp -p sudoers sudoers-org
# visudo
~~~

　ユーザ名xxxxxxxxを以下のように登録する。

~~~linux
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
xxxxxxxx      ALL=(ALL)       ALL

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

　これでパスワードなしでsudoを実行できる。
　環境設定をする間はこのようにしておいて、環境設定が終わったらここの設定を変えるようにする。

## .sshディレクトリのコピー

　新たに作ったユーザのディレクトリにはWebArena Indigoならrockyディレクトリの直下にあった.sshがない。これをコピーして所有者・グループを変更しておく。
　Kagoyaでは/home/cloud-userの直下に.sshがある

　cloud-user直下の.sshの初期状態が以下のようになっている。

~~~linux
# ls -lrta .ssh/
total 12
drwx------ 3 cloud-user cloud-user 4096 Sep 14 09:00 ..
-rw------- 1 cloud-user cloud-user  381 Sep 14 09:00 authorized_keys
drwx------ 2 cloud-user cloud-user 4096 Sep 14 09:00 .
~~~

　新たに作ったディレクトリの中は以下のようになっていて.sshディレクトリは入っていない。

~~~linux
# sudo -i -u xxxxxxxx
$ ls -lrta
total 20
-rw-r--r--   1 xxxxxxxx users  376 Jul 27  2021 .bashrc
-rw-r--r--   1 xxxxxxxx users  141 Jul 27  2021 .bash_profile
-rw-r--r--   1 xxxxxxxx users   18 Jul 27  2021 .bash_logout
drwxr-x--x   2 xxxxxxxx users 4096 Sep 14 10:54 .
drwxr-xr-x. 14 root       root  4096 Sep 14 10:55 ..
~~~

 cloud-userから.sshディレクトリをコピーして所有者・グループを変える。

~~~linux
$ sudo cp -p -r /home/cloud-user/.ssh .
$ ls -lrta
total 24
-rw-r--r--   1 xxxxxxxx users       376 Jul 27  2021 .bashrc
-rw-r--r--   1 xxxxxxxx users       141 Jul 27  2021 .bash_profile
-rw-r--r--   1 xxxxxxxx users        18 Jul 27  2021 .bash_logout
drwx------   2 cloud-user cloud-user 4096 Sep 14 09:00 .ssh
drwxr-xr-x. 14 root       root       4096 Sep 14 10:55 ..
drwxr-x--x   3 xxxxxxxx users      4096 Sep 14 11:23 .
$ sudo ls -lrta .ssh/
total 12
-rw------- 1 cloud-user cloud-user  381 Sep 14 09:00 authorized_keys
drwx------ 2 cloud-user cloud-user 4096 Sep 14 09:00 .
drwxr-x--x 3 xxxxxxxx users      4096 Sep 14 11:23 ..

$ sudo chown -R xxxxxxxx .ssh
$ ls -lrta
total 24
-rw-r--r--   1 xxxxxxxx users       376 Jul 27  2021 .bashrc
-rw-r--r--   1 xxxxxxxx users       141 Jul 27  2021 .bash_profile
-rw-r--r--   1 xxxxxxxx users        18 Jul 27  2021 .bash_logout
drwx------   2 xxxxxxxx cloud-user 4096 Sep 14 09:00 .ssh
drwxr-xr-x. 14 root       root       4096 Sep 14 10:55 ..
drwxr-x--x   3 xxxxxxxx users      4096 Sep 14 11:23 .
$ ls -lrta .ssh/
total 12
-rw------- 1 xxxxxxxx cloud-user  381 Sep 14 09:00 authorized_keys
drwx------ 2 xxxxxxxx cloud-user 4096 Sep 14 09:00 .
drwxr-x--x 3 xxxxxxxx users      4096 Sep 14 11:23 ..
~~~

## ポート番号をデフォルトの22番から変更

　ポート番号がデフォルトの22番のままだと攻撃を受けやすいので適当な値に変えておく。
　sshd設定ファイルを変更する。変更前にバックアップは取っておく。

~~~linux
$ cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config-org
$ sudo vi /etc/ssh/sshd_config
~~~

　ここでPortの数値を以下のようにする。

~~~linux
#Port 22
Port zzzzz
~~~

　適切に変更されているかどうかは以下のコマンドでエラーが表示されないことで確認できる。

~~~linux
$ sudo sshd -t
~~~


## ポート番号変更のためのsshd再起動【WebArena Indigo(RockyLinux8.4)の場合】

　しかし、WebArena Indigoの場合は、これだけではsshdを再起動してもエラーになる。

~~~linux
$ sudo systemctl restart sshd
Job for sshd.service failed because the control process exited with error code. 
See "systemctl status sshd.service" and "journalctl -xe" for details.
~~~

　これを解決するには、SELinuxのセキュリティ設定も変更する。以下のようにする。

~~~linux
$ sudo semanage port -l | grep ssh
ssh_port_t                     tcp      22
$ sudo semanage port -a -t ssh_port_t -p tcp zzzzz
$ sudo systemctl restart sshd$ sudo semanage port -l | grep ssh
ssh_port_t                     tcp      zzzzz, 22
$ sudo systemctl restart sshd
~~~

　これでsshdが再起動できて、ポート番号も変更できた。

## ポート番号変更のためのsshd再起動【Kagoya(RockyLinux8.5)の場合】

 Kagoyaの場合は、再起動の前にファイアウォールの設定をしないといけない。

~~~linux
$ sudo firewall-cmd --add-port=zzzzz/tcp --zone=public --permanent
success
$ sudo firewall-cmd --reload
success
$ sudo firewall-cmd --list-ports --zone=public
zzzzz/tcp
~~~

 以下でsshdが再起動できて、ポート番号も変更できる。
~~~linux
$ sudo systemctl restart sshd
~~~


## TeraTermからの接続

　TeraTermから新しいユーザ名でアクセスする。「SSH認証」画面でユーザ名とパスワードを新たに設定したものにすればいい。

![a2_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2384942/286fe7d3-7587-44c2-86cb-2c8ce6e4c665.png)


## TeraTermマクロを用いての接続

 TeraTermマクロをテキストファイルに以下のように書いて、ファイルタイプをttlにする。ttlをTeraTermに関連付けすれば、ダブルクリックするだけで立ち上げることができる。

~~~teraterm
username = 'xxxxxxxx'
hostname = 'yyy.yyy.yyy.yyy'
userpasswd = '●●●●●●●●'
portnum = 'zzzzz'
userkeyfile = 'C:\Users\y_kat\Documents\webarena\key\private_key.txt'

msg = hostname
strconcat msg ':'
strconcat msg portnum
strconcat msg ' /ssh /auth=publickey /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg userpasswd
strconcat msg ' /keyfile='
strconcat msg userkeyfile

connect msg
~~~


---

RockyLinux8 vps環境設定3) 他のサーバとのssh接続
https://qiita.com/naga_kt/items/f887ee7f71453ac25255
に続く。

---
### 参考記事

CentOS
Linuxのユーザー管理　ユーザーを新規作成・変更・削除する方法
https://proengineer.internous.co.jp/content/columnfeature/8552

CentOS
CentOSでユーザがsudoを使えるよう設定する
https://www.suzu6.net/posts/144-centos-su-user/

Indigo VPSでユーザーを追加したのに公開鍵で接続できなかった原因
https://itkansoku.hatenablog.com/entry/202106-Indigo-VPS-SSH-access-error-lack-of-authorized-keys

【linux】sshのポートを変える（22番から変更）
https://www.softel.co.jp/blogs/tech/archives/1516

RockyLinux
Rocky Linux sshのポートを変更する
https://mebee.info/2021/07/15/post-38718/

centos
【CentOS7】SSH（sshd）がエラーで起動しない場合の解決方法
https://claypier.com/centos7-sshd-error/

【Tera Term】鍵認証方式でのSSH自動ログインマクロ
https://humo-life.net/memo/doku.php?id=%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2:teraterm:%E9%8D%B5%E8%AA%8D%E8%A8%BC%E6%96%B9%E5%BC%8F%E3%81%A7%E3%81%AEssh%E8%87%AA%E5%8B%95%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%83%9E%E3%82%AF%E3%83%AD