.
[ おまとめ ]
xserver vps を契約したので、設定メモです
(01) 前提事項
(02) teraterm にて ssh 接続
(03) 一般ユーザーの作成
(04) 一般ユーザーでの ssh 設定
(05) sshd_config の設定
(06) port No. 変更
(07) その他の設定
(08) ftp 接続
(09) python / pip の設定
(10) cron の設定
(11) イメージ バックアップ
[ 1. キッチン ]
 ・Xserver VPS / 2GB プラン
  -> Ubuntu 22.04 (64bit)
 ・Windows10 64bit pc
 ・Tera Term Pro version 2.3
[ 2. 調理 ]
---- (01) 前提事項 -------------------------
[ VPS パネル ] にて、以下設定をしておきます
・OS -> Ubuntu 22.04 を選択
・root パスワード設定
・SSH Key の登録、xxxx.pem キーファイルの保存
・接続許可ポート: SSH(22) ON にする
・電源操作: 起動
・ひとまずの ssh 接続 + ssh key の設定
 電源操作 の左にある 「コンソール」 より
 root にて接続し、以下 sshd_config の編集
 ・現在の設定確認
 # cat /etc/ssh/sshd_config
 ・念のため、現在の設定のバックアップ
 # cd /etc/ssh/
 # cp -R sshd_config sshd_config_bk1
 # vi /etc/ssh/sshd_config
 以下 2つを有効にする ( # を外す )
 PubkeyAuthentication yes
 AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2  
 ssh 設定反映
 # service sshd reload
 ssh リスタート
 # /etc/init.d/ssh restart
.
---- (02) teraterm にて ssh 接続 -----------
・Host: 付与されたグローバルIP
・Service: SSH
・TCP port: 22
・User name: root
・Passphrase: 空(入力なし)
ちょっとうる覚えですが、初期段階では確か、
 /etc/ssh/sshd_config
 PermitRootLogin prohibit-password
 PasswordAuthentication no
 となっておりますので、設定した root パスワードは、
 入力しても無効ですが、
 以下 xxxx.pem にてログイン可能となります
・Use RSA/DSA/ECDSA/ED25519 key to login:
 ダウンロードした xxxx.pem ファイルを指定
.
---- (03) 一般ユーザーの作成 ---------------
※ ユーザー名は、abcd としてます
 ・ユーザーの追加
 # useradd abcd
 ・ユーザーのパスワード設定
 # passwd abcd
 ・sudo の設定
 # usermod --append -G sudo abcd
 ・home ディレクトリの作成
 # cd /home
 # mkdir abcd
 ・パーミッションの設定
 # chown abcd:abcd abcd
 # chmod 755 /home/abcd
 ・確認
 # ls -lah
.
---- (04) 一般ユーザーでの ssh 設定 --------
ユーザーのホームディレクトリに「.ssh」というディレクトリ作成し、
パーミッションを「700」に設定します
 # cd /home/abcd
 # mkdir .ssh
 # chown abcd:abcd .ssh
 # chmod 700 .ssh
 ・確認
 # ls -lah
root で使用している authorized_keys を
ユーザー側にも複製し、パーミッションを「600」に設定します
(本来は個別で ssh key を作成したほうが良いのかもしれません)
 # cd /root/.ssh/
 # cp -R authorized_keys /home/abcd/.ssh/
 # cd /home/abcd/.ssh/
 # chown abcd:abcd authorized_keys
 # chmod 600 /home/abcd/.ssh/authorized_keys
 ・確認
 # ls -lah
.
---- (05) sshd_config の設定 ---------------
 ・現在の設定確認
 # cat /etc/ssh/sshd_config
 ・念のため、現在の設定のバックアップ
 # cd /etc/ssh/
 # cp -R sshd_config sshd_config_bk2
 # vi /etc/ssh/sshd_config
 (root ログインの禁止)
 PermitRootLogin no
 (ssh キーファイル authorized_keys2 削除、しなくても大丈夫です)
 AuthorizedKeysFile .ssh/authorized_keys
 (パスワードによる ssh 接続の禁止、おそらく 初期値で no になってます)
 PasswordAuthentication no 
 (一般ユーザーの ssh 接続許可)
 AllowUsers abcd
 ssh 設定反映
 # service sshd reload
 ssh リスタート
 # /etc/init.d/ssh restart
 exit
 -> 一旦 teraterm を終了
これで、ひとまず一般ユーザーでの
ssh ログインが可能になります
※ ご注意!
 記憶では teraterm で、ssh 接続中でも、
 /etc/ssh/sshd_config の編集・反映は、できましたが、
 ( おそらく次回起動分からの有効、違ってたらすみません )
 設定変更により、ssh 接続ができなくなった場合は、
 [ VPS パネル ] 「コンソール」より
 root ないしは、作成されたユーザーで接続し、
 ssh 設定を元に戻すことになります
 $ cd /etc/ssh/
 ・sshd_config_bk のバックアップファイルが存在することを確認
 $ ls -lah
 ・sshd_config の削除 (いきなり消えますのでご注意)
 $ sudo rm -rf sshd_config
 ・バックアップファイルからの戻し
 $ sudo cp -R sshd_config_bk sshd_config
 ssh 設定反映
 $ sudo service sshd reload
 ssh リスタート
 $ sudo /etc/init.d/ssh restart
 これは、以降の Port No. 変更にて
 ssh 接続ができなくなった場合も、同様になります
.
---- (06) port No.変更 ---------------------
[ VPS パネル ] 接続許可ポート のメニュー
の表記 SSH(22) からも分かるとおり、
xserver vps では、ssh ポートは、22 固定となっております
ですので、/etc/ssh/sshd_config の
#Port 22 を Port 22 と有効にし、
Port 2000 などと変更しても、
ssh 接続は time out となり接続できません
ですので、port No. の管理および、変更は、
ubuntu のファイアウォール (ufw) 側で制御します
(今回の方法では、ssh 以外のポートも
[ VPS パネル ] 接続許可ポート機能を使用せず、
ufw で追加許可していく形になります)
※ ssh の Port No. は、
 well known port 以外で、3003 としてます
A. [ VPS パネル ] 接続許可ポート メニューにて
 全て許可 -> ON にします
B. 一般ユーザーにて ssh ログインし、
 ファイアウォール (ufw) 設定をします
 ufw ステータス確認
 $ sudo ufw status
 Status: inactive -> 未稼働
 IPv6 を無効化(必要の際は)
 $ cat /etc/default/ufw
 $ sudo vi /etc/default/ufw
 IPV6=no
 ファイアウォールを有効にする
 $ sudo ufw enable
 「deny(ホワイトリスト)」形式とするため、全拒否にします
 $ sudo ufw default deny
 現存接続を維持するため、22 と、切り替え予定の 3003 を許可します
 $ sudo ufw allow 22
 $ sudo ufw allow 3003
 ufw 再読み込み
 $ sudo ufw reload
 -> ファイアウォールを再読込しました
 設定内容の確認
 (ルール番号を表示する「numbered」オプションを付けます)
 $ sudo ufw status numbered
 Status: active
      To     Action      From
      --     ------      ----
 [ 1] 22    ALLOW IN    Anywhere
 [ 2] 3003  ALLOW IN    Anywhere
 特定のIPアドレスのみ通信を許可する
 $ sudo ufw allow from xxx.xxx.xxx.xxx to any port 3003
などを行うとさらにセキュリティ強化になります
C. ssh_config の port No.変更
 ・現在の設定確認
 $ cat /etc/ssh/sshd_config
 デフォルト値は #Port 22
 -> # で無効扱いになっているものの、22 で機能してます
 ・念のため、現在の設定のバックアップ
 $ cd /etc/ssh/
 $ sudo cp -R sshd_config sshd_config_bk3
 ・22 -> 3003 へ変更
 $ sudo vi /etc/ssh/sshd_config
 Port 3003
 ssh 設定反映
 $ sudo service sshd reload
 ssh リスタート
 $ sudo /etc/init.d/ssh restart
 exit
 -> 一旦 teraterm を終了
D. 変更後の port No. で ssh 接続を確認
-> これで、ssh の指定 Port No. での接続が可能になります
-> 無事接続が確認できましたら、No.22 を削除します
 ・ 設定を確認(削除前)
 $ sudo ufw status numbered
 Status: active
      To     Action      From
      --     ------      ----
 [ 1] 22    ALLOW IN    Anywhere
 [ 2] 3003  ALLOW IN    Anywhere
 ・ [ 1 ] の 22 を削除
 $ sudo ufw delete 1
 ・ 設定を確認(削除後)
 $ sudo ufw status numbered
 Status: active
      To     Action      From
      --     ------      ----
 [ 1] 3003  ALLOW IN    Anywhere
今回は、ssh 指定 Port No. のみの許可ですので、
その他のポートもお好みで ufw で追加許可します
.
---- (07) その他の設定 ---------------------
E. コンソール 設定
ubuntu + teraterm/ssh で不便になっている
以下を快適にします
 E1. 十字キー/TABキー 入力補完
 $ cat /etc/passwd
 abcd:x:1001:1001::/home/abcd:/bin/sh
 デフォルトのシェル /bin/sh を /bin/bash に変更
 $ sudo chsh -s /bin/bash abcd
-> 変更した段階ではまだ sh のままなので、
  以下の bash コマンド ($ source) を使用する前に、
  一旦、exit で抜けて、再度 ssh ログインして
  bash の利用を可能にしておきます
 E2. コンソールの日本語表示を英語にする
 (ユーザー環境変数ファイル作成)
 ( .bashrc 作成)
 $ cd /home/abcd/
 $ touch .bashrc
 $ chmod 644 .bashrc
 (英語固定表記 [export LANG=en_US] を追記保存)
 $ sudo vi .bashrc
 export LANG=en_US
 ( .bash_profile も複製)
 $ cp -R .bashrc .bash_profile
 (更新を反映させる)
 $ source .bashrc
 $ source .bash_profile
F. zip ツール
何かと要りようなので、入れておきます
 $ sudo apt update
 $ sudo apt install zip
 $ sudo apt install unzip
.
---- (08) ftp 接続 -------------------------
上記 (6) までの ssh 設定、接続が完了してましたら、
filezilla などで、
sftp / IP / ssh 指定 Port No.
作成したユーザーID + xxxx.pem (ssh キーファイル)
にて接続ができます
.
---- (09) python / pip の設定 --------------
xserver vps の ubuntu 22.04 で
インストールされている python は、
ver 3.10.6 で、特に不便はないので
このまま使用します
pip はインストールされてませんので、
設定していきます
 $ /bin/python3 --version
 Python 3.10.6
 $ /bin/python3.10 --version
 Python 3.10.6
 $ which python3
 /usr/bin/python3
 $ which python3.10
 /usr/bin/python3.10
 $ which pip -> なし
 $ which pip3 -> なし
 (pip のインストール)
 $ sudo apt update
 $ sudo apt install python3-pip
 $ which pip
 /usr/bin/pip
 $ which pip3
 /usr/bin/pip3
 (pip パッケージデフォルトモジュールの確認)
 $ pip list
あとは、お好みの pip を入れて完了です
$ /usr/bin/python3 /home/abcd/test/test01.py
こんな感じで実行できます
.
---- (10) cron の設定 ----------------------
上記 (09) で確認した python の自動実行を
設定してみます
crontab コマンドは、
crontab -r で削除されてしまうから使ってはダメです
/etc/crontab(ファイル)を使用しなさい
などと言われておりますが、
・ユーザー単位で使用したい
・消えても再設定する
ので、crontab コマンドを使用します
※ ビジネス現場での使用の場合は考慮してください
 ちなみにこのような回避をされる方もいらっしゃいます
 危険な crontab -r を封印する
 https://qiita.com/kawaz/items/1620300551b5b3f2eccc
G. 設定エディタの選択
crontab コマンド初回実行時、編集を行うエディタの選択画面が
表示されます
 Select an editor.  To change later, run 'select-editor'.
 1. /bin/nano <---- easiest
 2. /usr/bin/vim.basic
 3. /usr/bin/vim.tiny
 4. /bin/ed
お好みの エディタの番号を入力して Enter を押します
私は 2. vi にしましたが、
選択を間違えた場合は、いつでも
$ select-editor
で、変更できます
H. ログ出力 の追加
python ロジック内で、cron 実行結果ログに出力される
標準出力(stdout)、エラー出力(stderr) の記述をしておきます
-> print('xxxx') のことです
import datetime
now1 = datetime.datetime.now()
now2 = '{0:%Y/%m/%d %H:%M:%S}'.format(now1)
aaa = 0
if aaa == 1:
	print(now2 + ': OK')
else:
	print(now2 + ': NG')
import datetime
now1 = datetime.datetime.now()
now2 = '{0:%Y/%m/%d %H:%M:%S}'.format(now1)
ccc = ''
try:
	bbb()
	ccc = 'OK'
except Exception as e01:
	ccc = 'NG: ' + str(e01)
print(now2 + ': ' + ccc)
次に、ログファイルを作成しておきます
 $ cd /home/abcd/test/
 $ mkdir log
 $ chmod 705 log
 $ cd log
 $ touch test01.log
 $ chmod 604 test01.log
I. crontab の設定
[設定例]
・毎日 22:10pm に実行されます
・cron にて test01.py が実行され、
 ./log/test01.log に実行結果ログが出力されます
 $ crontab -u abcd -e
(選択したエディタが起動されます)
(以下を追記して保存します)
 10 22 * * * /usr/bin/python3 /home/abcd/test/test01.py >> /home/abcd/test/log/test01.log 2>&1
 確認
 $ crontab -l
.
---- (11) イメージ バックアップ ------------
xserver vps では 50GB までの
イメージ保存領域が利用できます
保存したイメージはOS再インストールや
新しいサーバーの作成に活用できます
とのことで、各種設定が終わりましたら、念のため
イメージバックアップ保存をしておいたほうが良いです
ちなみに、上記設定後のバックアップで、
4.93GB 使用となりました
[ 3. 食感 ]
※1 取り急ぎの実行環境の作成になります、
  その他のセキュリティ設定は別途行ってください
※2 ちなみにドメイン未設定での記事になります
※3 ほぼ ubuntu の設定ですので、[ VPS パネル ] での設定以外、
 他社 vps と似たような感じでいけると思います
※4 今回こちらで確認した環境設定ですが、
  使用環境やバージョンにより必ず同じ環境にはならないかもしれません
  失敗しましたら、vps の醍醐味である、
  OS 再インストールを行ってリトライしてみてください
.