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でログインする
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 で編集する
# VPSその1
function vps1 {
ssh -i 秘密鍵のパス ユーザ名@ホストのIPアドレス
}
- エイリアスが実行できない(スクリプトの実行が無効の場合)
- 管理者権限で
Set-ExecutionPolicy RemoteSigned
を実行する
- 管理者権限で
Set-ExecutionPolicy RemoteSigned
> Y
# 実行ポリシーを確認
Get-ExecutionPolicy
鍵認証接続もPowershellのほうがいいね
ポートの変更
デフォルトのままだと危険らしいので
Port 2222
rootユーザのログイン禁止
PermitRootLogin no
パスワード認証を禁止
PasswordAuthentication no
RSA認証を許可
RSAAuthentication yes
公開鍵認証を許可
PubkeyAuthentication yes
PAM認証を禁止
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
- この時点でかなりおしゃれなターミナルになる
- ならなければどこかおかしい
- 最後にモジュールの設定をして、補完やハイライトされるようにする
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
alias size=ncdu
コマンドパッケージ
Rustのコマンドツールを入れる
-
exa : ls
-
bat : cat
-
fd : find
-
procs : ps
-
ripgrep : grep
-
上記をエイリアスに設定しておく
sudo apt install build-essential
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が入ってないってこと
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
pandas
numpy
scipy
websocket
websocket-client