エックスサーバーにSSH接続する際のよくあるミス

# エックスサーバーにSSH接続する際のよくあるミス
初心者である私がつまずいたところをメモしときます。
著者はwslのubuntuを使用しています。
つまずいたところだけメモしようと思ったのですが、せっかくなので鍵の生成から説明する事にしました。
そんなの知っているよ！っていう人は[**読み飛ばして**](#間違えるポイント)ください。
自分も初心者なのであしからず…
## 鍵の準備
まずはLinuxにてssh-keygenコマンドを使い、公開鍵と秘密鍵を生成します。
オプション無しだとデフォルトで3072ビットの鍵が生成されます(2022/12現在)。オプションに関してはここでは詳しく触れません。オプションに関して詳しく知りたい方は、[こちらのサイト(＠IT)](https://atmarkit.itmedia.co.jp/ait/articles/1908/02/news015.html)にて詳細に説明されています。
```
~$ cd ~
~$ ssh-keygen
```
何やら対話形式で色々聞かれます。**全てEnterを押していただいても大丈夫**ですが、ここでパスワードの設定なんかもできます。
```
Generating public/private rsa key pair.
Enter file in which to save the key (C: ~/.ssh/id_rsa): # ファイルの保存場所とファイル名を指定。
Created directory 'C: ~/.ssh'.
Enter passphrase (empty for no passphrase): # 鍵にパスワードを設定。
Enter same passphrase again: # 確認の為、もう一度パスワードを入力。
Your identification has been saved in C: ~/.ssh/id_rsa.
Your public key has been saved in C: ~/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:SuUHWz ... mOao user@host
The key's randomart image is:
+---[RSA 3072]----+
|      .+*=.o=X+. |

...

|                 |
+----[SHA256]-----+
```
鍵が ~/.ssh に生成されます。
id_rsaが秘密鍵、誰にも教えてはいけません。
id_rsa.pubが公開鍵、これを接続先に設定します。
```
~$ cd ~/.ssh
~/.ssh$ ls
id_rsa  id_rsa.pub
```
catコマンドで公開鍵の中身を見てみます。
中身を全てクリップボードにコピーしてください。後で使用します。
```
~/.ssh$ cat id_rsa.pub
ssh-rsa AAAsedrftgyhujiBAAABgQC4P+sl
...
jiKS3MwAE2drtfgyhue0yh4M= user@host
```
## エックスサーバーに鍵を登録する。
サーバーパネルのSSH設定画面にて状態をONにします。「設定する」をクリックするのを忘れないでください。
![ssh設定画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452092/2b97651f-1215-3bb1-12b9-f84836c5f0c9.png)
「公開鍵登録・更新」項目を選択し、先ほどクリップボードにコピーしておいた公開鍵をペーストします。「設定する」をクリックして完了。
![公開鍵設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452092/14c6355c-7090-45ec-7115-a11375a865d5.png)
## Linuxからssh接続 (つまずいたところ)
これでやっとssh接続ができます。ここから初心者の私がつまずいたところです。
linuxからsshコマンドを使い、ssh接続を試みます。以下のような形式でsshコマンド打ち、接続します。
主に３つのオプションを指定しています。
- -iオプション: 秘密鍵を指定しています。独自にファイル場所を指定した場合は、設定した通りのファイルパスを指定します。
- -pオプション: ポート番号を指定しています。
- -lオプション: ログインユーザ名を指定しています。
```
~$ ssh -i ~/.ssh/id_rsa <サーバー番号>.xserver.jp -p 10022 -l <サーバーID>
例: ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p 10022 -l xs987654

# 初回の通信で聞かれる。known_hostsに登録される。
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
```

#### 間違えるポイント
ここでつまずくポイントを確認していきましょう。
```
Permission denied　# 何故だ！ 接続できない！
```
- **22番ポートで接続しようとする。**
エックスサーバーではセキュリティの為、通常の22番ポートではなく、デフォルトでは10022番ポートで通信を行います。-pオプションで**10022番ポートを指定**してください。
✕　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p **22** -l xs987654
〇　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p **10022** -l xs987654
- **ユーザ名を指定していない。**
-lオプションでユーザ名を指定しないとPermission deniedされます。ユーザ名はサーバーIDです。
✕　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p 10022
〇　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p 10022 **-l xs987654**
- **ユーザ名が間違っている。**
エックスサーバーにおけるユーザ名は**xsから始まるサーバーID**です。svから始まるのはサーバー番号です。**サーバーIDとサーバー番号は別物です。**
✕　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p 10022 -l **sv12345**
〇　ssh -i ~/.ssh/id_rsa sv12345.xserver.jp -p 10022 -l **xs987654**
- **ホスト名が間違っている。**
サーバーパネルからホスト名を確認してください。ホスト名に使われているのはsvから始まるサーバー番号です、サーバーIDではありません。
✕　ssh -i ~/.ssh/id_rsa **xs987654**.xserver.jp -p 10022 -l sv12345
〇　ssh -i ~/.ssh/id_rsa **sv12345**.xserver.jp -p 10022 -l xs987654
#### サーバーIDとサーバー番号は別物！気を付けよう！
サーバーパネルからよく確認するように…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2452092/053ffcc2-bb4e-9cd6-30a3-87814db83535.png)

何かミスがございましたらコメントください。