WebArena Indigo 環境設定2）ユーザ追加

WebArena Indigo 環境設定１）TeraTermからログインするまで
https://qiita.com/naga_kt/items/0dd2f2e80bfd7a4666f8
の続き。

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

## ユーザの追加(CentOS7/RockyLinux8)
　デフォルトのcentosまたはrocky以外に新たなユーザを追加する。
　useraddでユーザを追加して、passwdでパスワードを与える。
　useraddで以下のように行なった。

~~~linux
$ sudo useradd -d /home/xxxxxxxx -g users xxxxxxxx
$ cd ..
$ ls -lrt
total 0
drwx------. 7 centos     centos     156 Dec 14 04:40 centos
drwx------. 2 xxxxxxxx    users      62 Dec 14 05:39 xxxxxxxx
~~~

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

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

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

~~~linux
$ sudo su –
# cd /home
# chmod 751 xxxxxxxx
~~~

## ユーザの追加(Ubuntu20.04LTS)
　デフォルトのubuntu以外に新たなユーザを追加する。
　ubuntuではuseraddでユーザを追加するとディレクトリが追加できない。
　adduserコマンドを用いて以下のように行なった。

~~~linux
$ sudo adduser --gid 100 xxxxxxxx
Adding user `xxxxxxxx' ...
Adding new user `xxxxxxxx' (1001) with group `users' ...
Creating home directory `/home/xxxxxxxx' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for xxxxxxxx
Enter the new value, or press ENTER for the default
        Full Name []:  
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] y
$ cd ..
$ ls -lrt
total 0
drwx------. 7 ubuntu     ubuntu  4096 Apr 11 07:13 ubuntu
drwx------. 2 xxxxxxxx    users  4096 Apr 12 01:47 xxxxxxxx
~~~

　オプション--gidでユーザIDを100と指定してグループをusersにした。

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

~~~linux
$ sudo su –
# cd /home
# chmod 751 xxxxxxxx
~~~

## ユーザに管理者権限を与える(CentOS7/RockyLinux8)

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

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

~~~linux
# cd /etc/
# ls -lrt sudoers
-r--r-----. 1 root root 4358 Jun 21  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を実行できる。
　環境設定をする間はこのようにしておいて、環境設定が終わったらここの設定を変えるようにする。

## ユーザに管理者権限を与える(Ubuntu20.04LTS)

　Ubuntuでは設定の編集を行なう前にエディタの設定を以下のようにしてvimに変更しておく。

~~~linux

$ sudo update-alternatives --config editor
There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
* 0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
  3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    15        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode
~~~

　ユーザの権限が指定されている/etc/sudoersをvisudoコマンドで編集する。

~~~linux
# cd /etc/
# cp -p sudoers sudoers-org
# visudo
~~~

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

~~~linux
# User privilege specification
root    ALL=(ALL:ALL) ALL
xxxxxxxx      ALL=(ALL:ALL) ALL
~~~


　これでパスワードなしでsudoを実行できる。



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

　新たに作ったユーザのディレクトリにはcentos/rocky/ubuntuディレクトリの直下にあった.sshがない。これをコピーして所有者・グループを変更しておく。

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

~~~linux
$ cd ~/.ssh/
$ ls -lrt
total 8
-rw-------. 1 centos centos 405 Dec 10 06:29 authorized_keys
-rw-r--r--. 1 centos centos 403 Dec 10 07:17 known_hosts
~~~

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

~~~linux
#cd /home/xxxxxxxx
#ls -lrta
total 12
-rw-r--r--. 1 xxxxxxxx     users  231 Apr 11  2018 .bashrc
-rw-r--r--. 1 xxxxxxxx     users  193 Apr 11  2018 .bash_profile
-rw-r--r--. 1 xxxxxxxx     users   18 Apr 11  2018 .bash_logout
drwxr-xr-x. 4 root         root    38 Dec 14 05:39 ..
drwx------. 3 xxxxxxxx     users  74 Dec 14 06:00 .
~~~

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

~~~linux
#cp -p -r /home/centos/.ssh/ .
#ls -lrta
total 12
-rw-r--r--. 1 xxxxxxxx    users 231 Apr 11  2018 .bashrc
-rw-r--r--. 1 xxxxxxxx    users 193 Apr 11  2018 .bash_profile
-rw-r--r--. 1 xxxxxxxx    users  18 Apr 11  2018 .bash_logout
drwx------. 2 centos      centos     125 Dec 13 07:47 .ssh
drwxr-xr-x. 4 root        root        38 Dec 14 05:39 ..
drwx------. 3 xxxxxxxx    users  74 Dec 14 06:00 .
#ls -lrta .ssh/
total 24
-rw-------. 1 centos     centos      405 Dec 10 06:29 authorized_keys
-rw-r--r--. 1 centos     centos      577 Dec 10 10:16 known_hosts
drwx------. 2 centos     centos      125 Dec 13 07:47 .
drwx------. 3 xxxxxxxx    users   74 Dec 14 06:00 ..

#chown -R xxxxxxxx .ssh
#ls -lrta
total 12
-rw-r--r--. 1 xxxxxxxx    users 231 Apr 11  2018 .bashrc
-rw-r--r--. 1 xxxxxxxx    users 193 Apr 11  2018 .bash_profile
-rw-r--r--. 1 xxxxxxxx    users  18 Apr 11  2018 .bash_logout
drwx------. 2 xxxxxxxx centos     125 Dec 13 07:47 .ssh
drwxr-xr-x. 4 root       root        38 Dec 14 05:39 ..
drwx------. 3 xxxxxxxx   users  74 Dec 14 06:00 .
#ls -lrta .ssh/
total 24
-rw-------. 1 xxxxxxxx centos      405 Dec 10 06:29 authorized_keys
-rw-r--r--. 1 xxxxxxxx centos      577 Dec 10 10:16 known_hosts
drwx------. 2 xxxxxxxx centos      125 Dec 13 07:47 .
drwx------. 3 xxxxxxxx   users   74 Dec 14 06:00 ..
~~~

## ポート番号をデフォルトの22番から変更(CentOS7/RockyLinux8)

　ポート番号がデフォルトの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を再起動してもエラーになる。

~~~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が再起動できて、ポート番号も変更できた。



## ポート番号をデフォルトの22番から変更(Ubuntu20.04LTS)

　Ubuntuでは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
~~~

　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
~~~


---

WebArena Indigo 環境設定3）他のサーバとのssh接続
https://qiita.com/naga_kt/items/eadb6cb39f7f2fc2216d
に続く。

---
### 参考記事

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

Ubuntu
Ubuntuでユーザーを追加、およびsudo権限を付与する
https://hibiki-press.tech/dev-env/ubuntu/adduser-gpasswd/5086

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

Ubuntu
Ubuntuで最初にやること
https://qiita.com/shoji-kai/items/1145ed46734dc1512a79

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