140行目: | 140行目: | ||
# systemctl status systemd-sysctl.service | # systemctl status systemd-sysctl.service | ||
# echo "vm.swappiness = 30" | sudo tee -a /etc/sysctl.conf | # echo "vm.swappiness = 30" | sudo tee -a /etc/sysctl.conf | ||
# sysctl -p | |||
* Debian等のデフォルトは60 | * Debian等のデフォルトは60 | ||
* メモリが少ない(1GB~2GB)サーバなら、20~30くらいが無難 | * メモリが少ない(1GB~2GB)サーバなら、20~30くらいが無難 |
2025年3月2日 (日) 16:51時点における版


Debian港の「全体」を理解してまとめておく。聖書やSimcityと同じで Debian港も「全体をしっかり把握」していれば、本質を深く理解でき、情報不足ゆえのつまずきを避ける事ができ、管理運営そのものも最高に楽しくなる。システムを「全て把握」していると何事も最高になる!
港の準備/インストール
- SHELL文字化けの恐れがあるので基本的に「英語」でインスト
- ただしキーボードは「Japanese」で「¥/|」が正しく入力されるか確認
- 少なくとも「rootパーテーション」は別にすることを考慮する。ここには最も基本的なシステムが収められており、もし他のパーティションが壊れたとしてもシステムを起動して補修作業ができるのでシステムをゼロから再インストするといったトラブルを防げる
いざ!自分の港へ接続!
- 自分の港をすべて把握して、セキュアな港を構築する
- Debian はインストール時に root と一般ユーザを登録する
- sudoコマンドがない場合は「su -」で完全 root で作業する (root が馴染み深くなる)
- 旧:城管理者のチェックリスト / Linuxマシンのセットアップ も参考
SSH接続
[管制室マシン] $ cat /proc/sys/kernel/random/entropy_avail $ ssh-keygen -t ed25519 // 秘密鍵(ローカル保管)と公開鍵(サーバ保管)のペアを作成 $ vi ~/.ssh/config HOST hoge HostName moge.vs.sakura.ne.jp Port 55555 $ ssh-copy-id hoge // サーバに公開鍵を転送 $ ssh-add // ローカルにパスフレーズを保存 $ ssh-add -l $ ssh hoge
[港マシン] $ systemctl status sshd $ ss -tan # vi /etc/ssh/sshd_config Port 55555 # systemctl sshd restart $ ss -tan $ lsof -i:55555 # ls /etc/ssh $ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub // フィンガープリントの確認 # vi /etc/ssh/sshd_config PasswordAuthentication no $ cat ~/.ssh/authorized_keys
- SSHの鍵認証で最も広く使われているのはRSA暗号
- でも最近はRSAよりも「Ed25519」という暗号化アルゴリズムが強固でパフォーマンスも良く安全面と性能面で最強
- VPS やコンテナはエントロピーが不足しやすいから、新しく鍵を作るときは haveged などでエントロピーを増やしてからがベスト!
SSHエージェントの起動
毎回のssh秘密鍵パスフレーズ入力が面倒な場合はssh-agentをサービスとして自動起動させておく。ただしcronはssh-agentのキーチェーンにアクセスできないらしい。ちなみに、秘密鍵パスフレーズはZIPファイルのパスワードみたいに内部的なものなのでそもそも空設定でも良さそう。
Create /etc/systemd/user/ssh-agent.service. Run the following commands (under your user account, not root) to install the systemd unit and start:
$ systemctl --user enable ssh-agent.service $ systemctl --user start ssh-agent.service $ systemctl --user status ssh-agent $ ps aux | grep ssh-agent
Add the following to ~/.bashrc:
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"
Logout then login, confirm ssh-agent is running:
$ systemctl --user status ssh-agent.service $ ssh-add $ ssh-add -L # loginctl enable-linger username
設定した秘密鍵パスフレーズを削除する場合。
$ ssh-keygen -f .ssh/key -p
マシン/シェル環境の確認
$ hostnamectl $ vi .bash_aliases alias ll='ls -lh --color=auto' alias less='less -N' $ . ~/.bash_aliases # vi /etc/hostname # vi /etc/default/keyboard XKBOPTIONS="ctrl:nocaps" # systemctl restart console-setup $ localectl
- リモートマシンBash環境は接続元マシンの設定が反映?
港ざっくり把握
大前提として Debian の説明書 を全て読む。その上で以下5点を把握すれば港全体を把握できる。
- 港内マップ:FHS
- 港内の常駐さん:ユニット/ダイモン (35/218名ほど)
- 港内の正社員:アプリ/コマンド (836名ほど)
- 港内の特別社員:派遣アプリ/dpkg (無限)
- 港レポート:港に関する報告ログ
1. 港内マップ(フロアマップ)
FHS 参照。英語ネイティブみたいに「home/自宅」や「lib/図書館」や「tar-ball/油人形」などを見て生き生きとした映像やそれに伴う感情を味わいながら把握して行く。
2. 港内の常駐さん(ユニット/ダイモン)
A daemon is a service process that runs in the background and supervises the system or provides functionality to other processes. Traditionally, daemons are implemented following a scheme originating in SysV Unix. Modern daemons should follow a simpler yet more powerful scheme (here called "new-style" daemons), as implemented by systemd(1). This manual page covers both schemes, and in particular includes recommendations for daemons that shall be included in the systemd init system.
$ systemctl -t service
- 詳しいことは GPT に聞く
3. 港内の正社員(アプリ/コマンド)
- Debian11では「sbin - システム管理者用(209個)」と「bin - 一般ユーザ用(627個)」の2種類のコマンドがある
- とりあえず、上記2種類を把握すればDebianシステムがデフォルトでできる事のおおよそのイメージがつく
- 「sbin」は一般ユーザからは見えない root用コマンド。rootになる必要がある
- オプション「--help」や「-V」、「man」でコマンドの解説が見れる
- ただしiPhoneアプリ等と同じで、深く理解すべきは全体の2割、よく利用されるコマンド (100個程)。故に、無意味な深掘りは厳禁。取捨選択が大切
- 最後に以前作成したページ:Linuxコマンドの内容も統合する
lrwxrwxrwx 1 root root 8 Nov 28 14:35 /sbin -> usr/sbin lrwxrwxrwx 1 root root 7 Nov 28 14:35 /bin -> usr/bin
4. 港内の特別社員(派遣アプリ/dpkg)
- 特別社員たち はパッケージ管理システム「apt」で派遣/管理される
- 全てのパッケージを最新のものにアップデートしてシステムを最新の状態にする
$ apt list --installed # apt update # apt upgrade # apt full-upgrade
- 管理パッケージのアップデートは自動化できる
# apt install cron-apt ← vi /etc/cron-apt/config(アプデ自動化) # timedatectl status # timedatectl set-timezone Asia/Tokyo # date
- ユーザがディスクの空き容量を使い切ってしまわないように、ユーザが利用するファイルシステムには独立したパーティションを割り当てる
- 変更されないデータを格納するファイルシステムは、リードオンリーでマウントすることによりファイルの改竄や破壊行為を抑えられる
- アドレススキャン(港探索)回避のためにブロードキャスト宛リクエストを無視する。下記の設定ファイルに追記
/etc/sysctl.conf net.ipv4.icmp_echo_ignore_broadcast=1
5. 港レポート(港に関する報告ログ)
港の状態を把握するために必要な現地からのフィードバック。
- journalctl:システム内の警備員が逐一記録するバイナリ形式の日誌
- rsyslog:サービスやアプリが書くテキスト形式の日記
- tail -f /var/log/apache2/access.log とか
港のチューニング
ガシガシRAM利用で機動力UP!
# systemctl status systemd-sysctl.service # echo "vm.swappiness = 30" | sudo tee -a /etc/sysctl.conf # sysctl -p
- Debian等のデフォルトは60
- メモリが少ない(1GB~2GB)サーバなら、20~30くらいが無難