未分類
2025/01/13
2025/04/11

Xserver vps 初期設定
~ 目次 ~
1 秘密鍵の作成。
まずローカルの~/.sshディレクトリがなければ作成して移動
ssh-keygen -t ed25519 -f id_ed25519_hoge
とします。-f以降は鍵の名前を好きに決めます。
この場合id_ed25519_hogeという『秘密鍵』とid_ed25519_hoge.pubという『公開鍵』の2種類が作成されるので、公開鍵の方をvpsの初期設定時に登録します。
これで秘密鍵の準備はできました。
2 osインストール
まずはos(今回はubuntu)をインストール、先ほど作成した公開鍵も登録します。
パケットフィルターはあとでファイアーウォールを設定するのでoffにします。
3 ssh接続〜osアップデート
インストールが完了したらipアドレスをコピー、ローカルから
ssh -i ~/.ssh/秘密鍵の名前 root@ipアドレス
としてvpsに接続
初回のみAre you sure you want to continue connecting (yes/no/[fingerprint])?
と聞かれるのでyesとして続行
root@x162-43-7-38:~#
といった表示になったら成功です
まずはosのアップデート
sudo apt update && apt upgrade -y
5分ほどかかる場合があります。
4 新規ユーザー作成
adduser ユーザー名
としてpassword設定
もう一度入力して確認
いろいろ聞かれますが、必要なければそのままエンター、yで進めていいと思います。
次に作成したユーザーにsudo権限を付与します。
usermod -aG sudo ユーザー名
確認
groups ユーザー名
ユーザー名:sudo といった表示が出れば成功です。
早速切り替えてみます。
su - ユーザー名
ユーザー名@xxxxといった表示になれば成功です。
5 新規ユーザーのssh設定
~/.sshディレクトリがなければ作成
mkdir .ssh
権限の変更
chmod 700 .ssh
rootの公開鍵をコピペ
sudo cp /root/.ssh/authorized_keys /home/choboz/.ssh/
所有権を変更
sudo chown -R choboz:choboz /home/choboz/.ssh
これで一度exitして、こんどはrootではなく
ssh -i ~/.ssh/id_ed25519_hoge ユーザー名@ipアドレス
で入れることを確認。
6 fish インストール
ここは完全に好みですが、fishシェルをインストールしてコンプリッション(自動補完)が効くようにします。
zというプラグインも入れると、一度行ったディレクトリにいちいちパスを入力しなくても「z ディレクトリ名」だけで移動できるようになって楽なのでおすすめです。
まずはインストール
sudo apt install fish
確認
fish -v
パスの確認
sudo cat /etc/shells
表示されたパスをchsh -s の後に入力、この時sudoは付けなくて良いようです
chsh -s /usr/bin/fish
一度exitしてもう一度接続
ssh -i ~/.ssh/秘密鍵の名前 ユーザー名@ipアドレス
Wellcome to fish ~ というような表示が出ればfishに切り替わっています。
次にプラグインマネージャーのfisherをインストール
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
プラグインのzをインストール
fisher install jethrokuan/z
これで一度行ったディレクトリには「z ディレクトリ名」とするだけで移動できます。
7 vimの基本操作
デフォルトで入っているエディターvimの基本操作を少し解説します。
全てを説明するとなるとかなりの量になるので、とりあえず基本中の基本を。
まずvimにはモードという概念があって、ノーマルモードでカーソルの移動、インサートモードで編集、ビジュアルモードで選択範囲の指定、コマンドモードでコマンドの入力となっています。
escキーで基本のノーマルモード、iキーでインサートモード、vキーでビジュアルモード、:でコマンドモードに入ります。
よくわからなくなったらとりあえずescキーを押して一度ノーマルモードに戻ると覚えておくといいでしょう。
ノーマルモードでのカーソル移動はhで←、jで↓、kで↑、lで→、となります。
コマンドモードへは:でコマンド入力モードに入り、wが保存、qで終了、あたりをとりあえず覚えておけばいいでしょう。
vimは最初少しややこしいですが慣れると高速で編集できるようになってとても楽しいので、興味がある方は一度neovimをインストールして使ってみることをお勧めします。
8 sshの設定
vimの基本操作を覚えたところで、早速ssh接続時のセキュリティ面を考慮した設定をしていきます。
まずは移動
cd /etc/ssh/sshd_config.d
次に設定ファイルを作成〜編集します
sudo vim custom.conf
まずはiキーでインサートモードに入ります。
私は次のように設定しています。
Port xxxxx
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
Port xxxxx としてPort番号をデフォルトの22から五桁の番号に変更
PermitRootLogin noとしてrootでの接続を禁止
PubkeyAuthentication yesとして秘密鍵による接続許可を明示
PasswordAuthentication noとしてパスワードによる接続を禁止
入力を終えたらescキーでノーマルモードに戻り、:でコマンドモード、wqと打ってエンターすれば保存&終了となります。
cat custom.conf
として編集内容を確認してから再読み込み
sudo systemctl restart ssh
9 ssh.socket設定
次にssh.socketの方もポートの変更を設定します。
まずは状態を確認
sudo systemctl status ssh.socket
activeになっていることを確認して編集。
sudo vim /lib/systemd/system/ssh.socket
ListenStreamのところに新しく設定したport番号を入力します。
[Unit]
Description=OpenBSD Secure Shell server socket
Before=sockets.target ssh.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run
[Socket]
ListenStream=xxxxx //ポート番号
Accept=no
FreeBind=yes
[Install]
WantedBy=sockets.target
RequiredBy=ssh.service
入力したら:wqで保存終了
次に読み込み、再スタート、確認
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl status ssh.socket
設定したポートの確認
ss -l
として設定したポートが待ち受け(listen)されているのが確認できたら完了。
一度exitしてまずはポートを指定しない(デフォルトの22番ポート)で接続できないことを確認してみます。
ssh -i ~/.ssh/秘密鍵の名前 ユーザー名@ipアドレス
無事接続を拒否されたら、今度はポート番号を指定して接続してみます。
ssh -i ~/.ssh/秘密鍵の名前 ユーザー名@ipアドレス -p ポート番号
無事接続できたら成功です。
10 ファイアーウォールの設定
最後にファイアーウォールの設定です。
まずはファイアーウォールの起動
sudo ufw enable
次に許可するポートの設定をします。まずは先ほど設定したポート番号、加えて必要ならhttpの80番ポートとhttpsの443番ポートも許可しておきます。
sudo ufw allow ポート番号
sudo ufw allow 80
sudo ufw allow 443
設定したら確認。
sudo ufw status verbose
設定したポート番号がALLOW(許可)されているのが確認できたら、ファイアーウォールを再起動して設定を適用させます。
sudo ufw reload
最後に
exit
して再度ssh接続ができるのを確認。
ここまでやればとりあえず一安心ですね、最後にローカルpcの.ssh/configに次のように書いて簡単に接続できるようにしておきます。
ServerAliveInterval 60
TCPKeepAlive yes
Host foo # 任意のホスト名
HostName xxx.xxx.xxx.xx # vpsのipアドレス
User bar # vpsユーザー名
Port xxxxx # vpsポート番号
IdentityFile ~/.ssh/id_ed25519_hoge # 秘密鍵のパス
この場合
ssh foo
とするだけで接続できるようになります、お疲れ様でした。