WebARENA VPSクラウドで新規ユーザーを作成し、ssh接続をするまで

# はじめに

初めての記事です。
拙い日本語になると思いますが、ご容赦願います。
本記事では、WebARENAのVPSクラウドで起動させたUbuntuサーバーに、新規作成したユーザーでsshログインをするまでにハマったことと、その解決策について書いていきます。

# 結論

- WebARENA VPSクラウドのUbuntu 18.04インスタンスの初期ユーザー名はubuntu、パスワードはインスタンス名の```i-```以降の文字列。
- sshログイン用の新規ユーザー作成時には、ディレクトリやファイルの所有者に注意

# ハマりポイント#1 そもそも初期ユーザーでsshログインができない

WebARENA VPSクラウドのブラウザ管理画面には簡易マニュアルなるものがあります。私は始めてこのサービスを利用するため、このマニュアルに従ってセットアップを行いました。インスタンス生成、キーペア作成、セキュリティグループ作成まで進めていざssh接続をしようとしたところ...Permission denied (Publickey).

```
root@xxx.xxx.xxx.xxx: Permission denied (publickey).
```

確かにマニュアルではブラウザ上でキーペアを生成しダウンロードした.pemファイルから認証をする方法が書かれているにも関わらず、私は自前の公開鍵を登録しました。だって公開鍵コピペ用の入力ボックスがあるのだもの。

![スクリーンショット_2021-02-28_21-21-57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557559/1645c460-6e79-f6e0-4f97-43464cac5310.png)
なんか文字重なってるし...

一応マニュアル通りブラウザ上で生成したペアから認証を試みても...```Permission denied```。つまり、公開鍵が自前のものかブラウザから生成したものかはあまり関係ないようです。ログインユーザーもマニュアルに記載してある"root"で間違えない**ハズ**です
そこで安直に「webarena ubuntu ssh できない」とggったところ衝撃の事実が。なんとUbuntuインスタンスのログイン用初期ユーザーは"root"ではなく"ubuntu"だそうで。

https://www.kthksgy.com/linux/webarena-vpscloud-ubuntu-ssh-error/

一応このことは公式サイトにも記載してありました。

https://help.arena.ne.jp/hc/ja/articles/360038700414-SSH%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6%E5%90%8D%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B-

しかし一番最初に目につくであろう簡易マニュアルと記載が違うのはまさに罠...。
ちなみにCentOSインスタンスの場合の初期ユーザー名は"centos"。今確認してみたら、マニュアルには一応「CentOS用」と記載してはありました。でも、CentOSインスタンスを作成したとしてもおそらく"root"ではログインできない(**未検証です**)のだと思うと...。

そしてこれは1番目に載せたサイトに記載してあったことですが、sshログイン自体は公開鍵認証方式でできるもののssh接続先のパスワードとなるとまた話は別のようです。パスワードはWebARENA VPSクラウドのブラウザ管理画面から見れるインスタンス名のうち、```i-```以降の文字列になっています。sshでログインできた場合はプロンプト文字列の```ユーザー名@```以降にあたる文字列がパスワードです。こちらの場合先頭の```i-```はもとからありません。
ざっと調べてみてもこの情報が公式で載ってないんですよね...

# ハマりポイント#2 新規作成したユーザーのssh認証に失敗

※以下のことはWebARENA VPSクラウド特有のハマりではありません。

最初からあるユーザー"ubuntu"とは別にユーザーを作成し、そのユーザーでsshログインしようとした際に失敗した話です。ここでは新たに作成したユーザーを"caffeine"としています。
ユーザー作成は至って普通です。ユーザー"ubuntu"でログインした状態で作業を行います。

```bash
sudo useradd caffeine -m
```

（```-m```オプションによってcaffeineのホームディレクトリを作成しています。）

```bash
sudo passwd caffeine
sudo usermod -G sudo caffeine
```

（caffeineのパスワードを設定し、sudoが使えるようにグループ設定を行います。）

次に、```/home/caffeine/.ssh/```下に```/home/ubuntu/.ssh/authorized_keys```をコピーします。ブラウザ上から私の環境の公開鍵を登録したので、ユーザー"ubuntu"のauthorized_keysを持ってくればOKです。

**ここからがミスポイント。コピペして真似しないで下さい。**

まずは```.ssh```ディレクトリを作成

```bash
sudo mkdir /home/caffeine/.ssh
```

root権限で行わないとPermission deniedとなるので安直にsudoをつけてしまいました。
そして

```bash
sudo cp /home/ubuntu/.ssh/authorized_keys /home/caffeine/.ssh
```

さて、これでcaffeineのホームディレクトリ以下にssh接続をするための材料が揃いました。
一度ユーザー"ubuntu"としてはログアウトし、クライアント側からユーザー"caffeine"として再度ログイン

```bash
ssh caffeine@xxx.xxx.xxx.xxx
caffeine@xxx.xxx.xxx.xxx: Permission denied (publickey).
```

```ぱーみっしょんでぃないど ぱぶりっくきー```。もう何度見たことか。ほんとこいつにはうんざりしますね。
ここからかなり消耗しました。```ssh caffeine@xxx.xxx.xxx.xxx -vvv```でデバッグ情報を確認したり、サーバー側で```/var/log/auth.log```を確認したり...
定番のパーミッション強度の確認や```/home/caffeine/.ssh/authorized_keys```に登録された公開鍵が自前のものと一致することの確認も行いました。それでも直らず...

ただ、原因はほんとにつまらないものです。```/home/caffeine```以下への```.ssh/```ディレクトリの作成、及びそのディレクトリ以下への```authorized_keys```のコピーをrootユーザーとして行っていたことで、ディレクトリとファイルが**どちらも```root:root```の所有物になっていました。**したがってPermission deniedが発生していたのです。

解決策は

```bash
sudo chown caffeine:caffeine /home/caffeine/.ssh
sudo chown caffeine:caffeine /home/caffeine/.ssh/authorized_key
```

これで所有者がcaffeineとなり、無事にcaffeineとしてsshログインができました。
めでたしめでたし。