エックスサーバーにSSH接続する際のよくあるミス
初心者である私がつまずいたところをメモしときます。
著者はwslのubuntuを使用しています。
つまずいたところだけメモしようと思ったのですが、せっかくなので鍵の生成から説明する事にしました。
そんなの知っているよ!っていう人は読み飛ばしてください。
自分も初心者なのであしからず…
鍵の準備
まずはLinuxにてssh-keygenコマンドを使い、公開鍵と秘密鍵を生成します。
オプション無しだとデフォルトで3072ビットの鍵が生成されます(2022/12現在)。オプションに関してはここでは詳しく触れません。オプションに関して詳しく知りたい方は、こちらのサイト(@IT)にて詳細に説明されています。
~$ 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にします。「設定する」をクリックするのを忘れないでください。
「公開鍵登録・更新」項目を選択し、先ほどクリップボードにコピーしておいた公開鍵をペーストします。「設定する」をクリックして完了。
Linuxからssh接続 (つまずいたところ)
これでやっとssh接続ができます。ここから初心者の私がつまずいたところです。
linuxからsshコマンドを使い、ssh接続を試みます。以下のような形式でsshコマンド打ち、接続します。
主に3つのオプションを指定しています。
- -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とサーバー番号は別物!気を付けよう!
何かミスがございましたらコメントください。