VPSで遊ぶためのメモ
はじめに
VPSで遊ぶためにプロバイダに迷惑をかけないための最低限のセキュリティ対策とその他の設定をする
環境
クライアントOS: Windows 10
サーバOS: Ubuntu20.04
ツール: Tera Term と Powershell
Powershell
配色を変更
ColorToolを使ってPowershellの配色を変更する
本体はここから
https://github.com/microsoft/terminal/releases/tag/1904.29002
スキームはここから
https://github.com/microsoft/terminal/tree/main/src/tools/ColorTool
ターミナル
# themeを確認
$ ./colortool.exe -s
campbell-legacy.ini
campbell.ini
cmd-legacy.ini
deuteranopia.itermcolors
OneHalfDark.itermcolors
OneHalfLight.itermcolors
solarized_dark.itermcolors
solarized_light.itermcolors
tango_dark.itermcolors
tango_light.itermcolors
# themeを適用
$ ./colortool.exe theme名
セキュリティ対策
root
パスワードを設定しておく
何もしていないとパスワードが設定されていないので、作業ユーザでログインしてシェルなどrootになってからでないとできない変更をしようとしたときにパスが設定してなくてrootになれなくて詰むことになるので
- rootでログインする
root
sudo passwd root
ユーザ
作業ユーザ作成
adduser username
管理権限を付与
sudoコマンドを使用できるようにする
usermod -aG sudo username
公開鍵作成
TeraTerm版
クライアント
- Homeディレクトリに.sshフォルダを作成
- 作成した.sshフォルダ内にTeraTermで公開鍵認証の鍵ペアを生成
サーバ
- 作業ユーザでサーバへパスワードログインしておく
- 公開鍵(.pub)をサーバの作業ユーザのhomeディレクトリへ設置(ドラッグ&ドロップ)する
- .sshフォルダを作成して、ここに公開鍵を移動する
- exitして、再びTeraTermから秘密鍵を選択してSSHログインできるか確認
Powershell版
クライアント
- 認証方式はrsaで鍵のビット数を4096に指定
- コメントとフレーズとファイルは指定しない(-Cと-Nと-f)
- 保存先と名前はデフォルトでhome/.ssh/id_rsaになる
- 名前を変えたければ入力する、そのままでいいならEnter
ターミナル
mkdir ホームディレクトリ\.ssh
cd ホームディレクトリ\.ssh
ssh-keygen.exe -q -t rsa -b 4096 -C '""' -N '""' -f id_rsa
鍵の生成はPowershellがいいね
サーバ
- ssh -i 秘密鍵のパス ユーザ@ホスト名で接続
- 毎度入力するのは面倒なのでエイリアスを設定
- notepad $profile で編集する
$profile
# VPSその1
function vps1 {
ssh -i 秘密鍵のパス ユーザ名@ホストのIPアドレス
}
- エイリアスが実行できない(スクリプトの実行が無効の場合)
- 管理者権限で
Set-ExecutionPolicy RemoteSigned
を実行する
- 管理者権限で
ターミナル
Set-ExecutionPolicy RemoteSigned
> Y
# 実行ポリシーを確認
Get-ExecutionPolicy
鍵認証接続もPowershellのほうがいいね
ポートの変更
デフォルトのままだと危険らしいので
/etc/ssh/sshd_config
Port 2222
rootユーザのログイン禁止
/etc/ssh/sshd_config
PermitRootLogin no
パスワード認証を禁止
/etc/ssh/sshd_config
PasswordAuthentication no
RSA認証を許可
/etc/ssh/sshd_config
RSAAuthentication yes
公開鍵認証を許可
/etc/ssh/sshd_config
PubkeyAuthentication yes
PAM認証を禁止
/etc/ssh/sshd_config
UsePAM no
ここで一旦sshサービスを再起動
rootログインできないことを確認してみる
sudo service ssh restart
システムを日本語化
日本語パックインストール
ターミナル
sudo apt-get install language-pack-ja
日本語化を適用
ターミナル
sudo update-locale LANG=ja_JP.UTF-8
ターミナル
strings /etc/default/locale
zsh
sudo apt install zsh
chsh -s /bin/zsh
- ターミナルを再起動する
- Zshが誕生したらEnter
- Zshのフレームワークであるprezto
をいれる
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
もろもろの初期化処理
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
- この時点でかなりおしゃれなターミナルになる
- ならなければどこかおかしい
- 最後にモジュールの設定をして、補完やハイライトされるようにする
~/.zpreztrc
zstyle ':prezto:load' pmodule \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'syntax-highlighting' \
'autosuggestions' \
'prompt' \
Dotfiles
- シェルが入ったらdotfiles等をscpかgitクローンで持ってくる
- git cloneは自分のレポジトリからやればいいので省略
- scpは以下の通り
あとで書く
ストレージ
aptコマンドで不要なゴミを削除
sudo apt-get autoremove
sudo apt-get autoclean
duよりみやすいncduで容量を確認する
標準のduコマンドより見やすい
sudo apt install ncdu
~/.zshrc
alias size=ncdu
コマンドパッケージ
Rustのコマンドツールを入れる
- exa : ls
- bat : cat
- fd : find
- procs : ps
ripgrep : grep
上記をエイリアスに設定しておく
Cコンパイラ等のビルドパッケージ群をインストール(必須)
sudo apt install build-essential
つぎにRustインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
パス追加
export RUST="$HOME/.cargo/bin"
export PATH=$PATH:$RUST
バージョン確認
cargo -V
パッケージをまとめてインストール
cargo install exa bat fd-find procs ripgrep
# ここでエラーになったらbuild-essetialが入ってないってこと
~/.zshrc
alias ls='exa'
alias cat='cat'
alias find='fd'
alias ps='procs'
alias grep='ripgrep'
ターミナルツール
tmux
基本的な使い方はここを参考にする
Python
pyenv
- いろんなpythonで遊びたいから切り替えが楽だといいね
ビルドツールをインストール
- pythonをビルドするためのツールをいれる
sudo apt install -y \
build-essential \
libffi-dev \
libssl-dev \
zlib1g-dev \
liblzma-dev \
libbz2-dev \
libreadline-dev \
libsqlite3-dev \
pyenvインストール
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
ターミナル
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
pythonインストール
# インストールできるやつ一覧
pyenv instlal -l
# インストール
pyenv install 3.9.4
python切り替え
# いまのpythonのバージョン
pyenv versions
# 全体のバージョンをきめる
pyenv global バージョン
# ローカルのバージョンをきめる
pyenv local バージョン
pip
- まずpipを最新にする
- パッケージは
pip install -r requirements.txt
で一括でインストール
# 最新にする
pip install -U pip
# バッケージ一括インストール
pip install -r requirements.txt
requiremets.txt
pandas
numpy
scipy
websocket
websocket-client