「さくらのクラウド超入門チュートリアル」でつまづいたポイントを解説

こちらは、[さくらインターネット Advent Calendar 2024](https://qiita.com/advent-calendar/2024/sakura)の24日目の記事です。
私は2024年10月にさくらインターネットに入社しましたが、元々はフロントエンドエンジニアであり、運用観点でのLinux操作や周辺の技術に慣れていません。  
そこで、自社のサービスを理解するために[さくらのクラウド超入門チュートリアル](https://qiita.com/zembutsu/items/538aa0a0211f9200b6c5)でハンズオンをしてみました。  

その中で「普段Linuxに慣れている人だと当たり前かもしれないけど、自身がわかっていなかったこと」や「環境によってつまづいたポイント」をご紹介したいと思います。

# 前提
- OSはRocky Linux 9.4 64bit を指定しています
- クライアント側の環境はWindows10 + WSL2 (Ubuntu) です
- 業務でサーバーに触れないけど、簡単なCLIの操作であればできるという方を想定しています
    - `ssh` などの基本的な用語は解説していません

# サーバー作成後ssh接続してもパスワード認証が通らない

## 現象
[TCP Wrapper で SSH のアクセス制限 - さくらのクラウド超入門・サーバ編(2) #チュートリアル - Qiita](https://qiita.com/zembutsu/items/c432a3e096729e181df9)
こちらに記載された手順でssh接続を行っても、以下の状態になる。

- `ssh [root@IP]` してもパスワードが通らない
- さくらのコンソールパネルから「コンソール」を使うとログインできる
- 公開鍵認証の場合はログインできる
- WSL2内だけでなく、Puttyなど他のクライアントからも接続できない

## 原因
Rocky Linuxの元となっているRHEL9系以降、sshを利用するためのデーモンである`sshd`の設定が変わっています。
(デーモン = 常駐プログラムのこと)

`PermitRootLogin` のデフォルト値が `yes` から `prohibit-password` に変わっており、これは`root`でのログインにおいてパスワード認証を禁止し、公開鍵認証のみ利用できるようにする設定です。

## 解決策
[「さくらのクラウド」公式アナウンス](https://manual.sakura.ad.jp/cloud/server/os-packages/archive-iso/rocky94-releasenote.html)でも推奨されている通り、公開鍵形式による認証を利用してください。

どうしてもパスワード認証を試したい場合は、`sshd_config` ファイルを編集することで実現できます。
1. `vi /etc/ssh/sshd_config` → `PremitRootLogin yes` に変更
2. 設定が反映されない場合は`sudo systemctl restart sshd` でsshdを再起動

※ 「さくらのクラウド」では、自身のPCにある公開鍵をコントロールパネル上で登録・利用することで、楽に公開鍵認証を利用することができます

## 補足
サーバー側の認証が失敗した場合は、下記のログもご確認ください。
`cat /var/log/secure/`

今回のケースでは、パスワード認証が失敗した旨しか書かれていませんが、ログの保存場所を知っておくことで他のケースで役立つと思います。

## 参考
- https://happy-nap.hatenablog.com/entry/2022/10/08/220946
- https://yumidon.com/2020/09/20/「centos-8」sshでrootログイン禁止する時のめも/

# get.docker.comを使ってDockerをインストールしようとするとエラーになる

## 現象
[DockerのインストールとWordPressの起動 - さくらのクラウド超入門・サーバ編(3) #docker-compose - Qiita](https://qiita.com/zembutsu/items/b345b9b820ad82e9b3d1)
こちらに記載された手順でget.docker.comを利用するとエラーが出る。

```shell
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

# ERROR: Unsupported distribution 'rocky’
```

## 解決策
get.docker.com のスクリプト自体が CentOS 8 系までしか対応していないようです。
設定を変更すると利用はできるものの、Rocky Linux 公式の [Docker インストール手順](https://docs.rockylinux.org/ja/gemstones/containers/docker/
)を利用することをオススメします。

## 参考

- https://pocketstudio.net/2022/01/17/centos-stream-8-rocky-linux-almalinux/

# ssh接続中に放置するとCLIが操作不能になる

## 現象
- CLI, ブラウザのコンソールともに操作を受け付けなくなる
- コントロールパネルから通常のシャットダウンをしても変化がない
- コントロールパネルから「強制シャットダウン」すると電源を落とすことができる

## 解決策
一定時間が経過すると自動的に接続が切れるようになっているため、クライアント側に `~/.ssh/config` を作成し、定期的にサーバーの生存確認を行う設定を追加することで回避できます。

```shell
touch ~/.ssh/config
```

```shell
Host *
  ServerAliveInterval 60
```

## 参考
- https://zenn.dev/syommy_program/articles/c7bd0d0daa156c

# WSL2環境でVPN接続後、sshで接続エラーになる

## 現象
[リモートアクセス(VPN)用アカウントを作成して接続する - VPCルータ編(3) #チュートリアル - Qiita](https://qiita.com/zembutsu/items/05513e59918dd2b7f146)
こちらに記載された手順でVPN接続を行った際、ssh接続できない。

## 解決策
VPNのMTUが1400なのに対し、WSL2側が1500となっており、送信量に差があるためにエラーが発生しているようです。
(MTU = 一回に送信できる最大のデータサイズ)

WSL2側でMTUを増やすよう設定します。

```shell
sudo ip link set eth0 mtu 1400
```

## 参考
- https://blog.jicoman.info/2020/12/hangup-ssh-connection-using-wsl2/
  - 設定がリセットされる場合は上記の記事にある起動時の設定を行ってください


# おわりに
私自身がつまづいたポイントをご紹介しました。
さくらインターネットは事業ドメインが技術への理解と密接に結びついているため、技術について学ぶ機会が多くあります。そこが大変な点でもあり、楽しいところです。

私個人としても、Linuxに限らず技術を学ぶハードルを低くしていくことで、興味を持った方々が前向きに楽しく学び続けられるようにしていきたいなと思います。

さくらインターネットではまだまだ積極採用中です。ご興味を持たれた方はぜひご応募ください！

https://www.sakura.ad.jp/lp/recruit-engineer/