さくらのVPSにalmaLinuxをインストールして設定【手順1】

何年かぶりにさくらのVPSを新たに契約して、新しいLinux環境をつくったので覚え書き。

環境の詳細

・さくらのVPS(1G)(リージョン石狩第1)
・almalinux8 もしくは almalinux9
申し込み画面では、オプションの設定は極力しない。あとから、ひとつずつ理解しながらやっていく。SSH の公開鍵認証も申し込み画面ではつくらない。

申し込んでしばらくすると完了メールが届く。メールを受け取ったらさくらのVPSのコントールパネルからサーバーに電源を入れる。
ターミナル(Poderosa)からログイン。ユーザー名は alma が自動的に作られているので、パスワードを入力してログインを試みると接続エラー。
ダイアログのメッセージは「Server does not support diffie-hellman-group1-sha1 for keyexchange」。

Poderosaのバージョンが古いのが原因なので、この機にTeraTarmに乗り換えた。

ターミナルでログイン後にやること

1.アップデート

全てのパッケージを更新する

sudo dnf update

もしくは

sudo dnf upgrade

dnf は CentOS7 までの yum と同じ。dnf は「Dandified Yum」の略らしい。

2.デフォルトのユーザー名から変更

さくらのVPSでは almaLinux をインストールするとデフォルトで alma というユーザーが作られる。デフォルトのユーザー名のままだとセキュリティ上不安なので変更する。

変更するには複数の手順を踏むことになるので別にまとめた。

3.公開鍵認証でログインできるようにする

参考ページ:SSH接続の設定変更方法

SSH接続の設定変更方法
目次: 鍵認証の設定- 公開鍵と秘密鍵の作成, 公開鍵認証の設定, SSH接続の設定変更., 公開鍵認証でのログイン方法- ポート番号の指定, 公開鍵認証でログイン.. TeraTermを利用し...

teratarm で公開鍵と秘密鍵の作成

teratarm で「設定」→「SSH鍵生成」
鍵の種類は ED25519 を選択。RSA は almalinux9 ではデフォルトで禁止になった。
サーバーログインできなくて、さくらのVPS の VNCコンソールからサーバーにログインしたら log にエラーが出ていた。

エラーログ

cat /var/log/secure
~中略~
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

公開鍵認証の設定

サーバーに接続した teratarm の画面に公開鍵(id_rsa.pub)をドラッグアンドドロップして「SCP」を選択すると、ユーザーのホームディレクトリに転送される。

ユーザーのホームディレクトリに移動後して、公開鍵認証の設定を行う。

$ mkdir .ssh
$ chmod 700 .ssh
$ cat id_rsa.pub > .ssh/authorized_keys //「>」で、別のファイルに出力内容を記述している
$ chmod 600 .ssh/authorized_keys
$ rm -f id_rsa.pub

SSH接続の設定変更

SSH接続の設定を変更するには、sshd_config ファイルを書き換える必要がある。

cd /etc/ssh
sudo vi sshd_config

ポート番号を変更する。ポート番号を22 → 49513~65535までの番号で好きなもの

[編集内容1]

#Port 22
↓
Port XXXX

「#」を削除します。SSH接続のportを22から任意の番号へ変更も可能です。

SSHを使った root でのログインを禁止

[編集内容2]

#PermitRootLogin yes  ← almalinux8
#PermitRootLogin prohibit-password ← almalinux9
↓
PermitRootLogin no

「#」を削除し"yes"を"no"に変更することで、rootユーザーでのログインを無効にします。

パスワード認証を無効にする

[編集内容3]

PasswordAuthentication yes
↓
PasswordAuthentication no

"yes"を"no"に変更することで、パスワード認証を無効にします。

構文チェック

sudo sshd -t

再起動

sudo systemctl restart sshd

/etc/ssh/ と ~/.ssh 違い
https://itstudy365.com/blog/2018/12/30/etc-ssh-%E3%81%A8-ssh-%E9%81%95%E3%81%84/

firewalld に新しいポート番号を追加

参考サイト

CentOS7でSSHのポート番号を変更する - Qiita
いつも忘れちゃうので備忘録centos7構築する際の手順としてSSHをつぶしてそのほかのポート番号を空けたいときにみるやーつ。ここでは22から2222に変更しています。適宜読み換えてください。…
firewalld の ssh のポートを変更
ssh のデフォルトポート(TCPの22番)の修正

firewalld の現在の状態を確認

systemctl status firewalld

結果

○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendo>
Active: inactive (dead)
Docs: man:firewalld(1)

抜ける場合は q

firewalld が起動していないので、起動させる

sudo systemctl start firewalld

firewalld起動時にサーバーとの通信が遮断される(ターミナルが落ちる)場合、firewalldで許可されていないポートで通信が行われていたと考えられる。この場合は、起動前にfirewalldにポート使用を許可するように設定しておく必要がある。

OS起動時の自動起動有効化

sudo systemctl enable firewalld
$ sudo firewall-cmd --list-all

現在のサービスを確認

public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client ssh ←許可された通信
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

sshd_config ファイルに記述した Port番号を使えるようにするために、firewalld を修正する。
もともとある /usr/lib/firewalld/services/ssh.xml を /etc/firewalld/ にコピーして修正する。

POINT
/usr/lib/firewalld/services/ssh.xml はシステム初期設定の保存場所
/etc/firewalld/services/ はユーザーが変更した設定の保存場所

cd /usr/lib/firewalld/services
cp ssh.xml /etc/firewalld/services/ssh-○○新しいポート番号.xml //copy
vi ssh-○○新しいポート番号.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and
  executing commands on remote machines.It provides secure encrypted co……
  If you plan on accessing your machine remotely via SSH over a firewal……
  enable this option. You need the openssh-server package installed for……
  to be useful.</description>
    <port protocol="tcp" port="22"/>  ← port="22" を port="○○新しいポート番号" に変更
</service>

リロード

firewall-cmd --reload

作成したサービス(ssh-○○新しいポート番号)を追加して、デフォルトのサービス ssh を削除する。

firewall-cmd --permanent --add-service=ssh-○○新しいポート番号   <----- 追加
firewall-cmd --permanent --remove-service=ssh    <----- 削除
firewall-cmd --reload

サービスが追加されたことを確認する

firewall-cmd --list-all

結果

public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client ssh-○○新しいポート番号
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
タイトルとURLをコピーしました