.
[ おまとめ ]
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 再インストールを行ってリトライしてみてください
.