エックスサーバーにSSH接続する際、数日前までは同様の手段でSSH接続できていたのに…なぜかできなくなった…!
ということ、ありませんか?
エックスサーバーにSSH接続できない原因は、基本的には3つしかないと考えています。
下記よりご説明します。
目次
エックスサーバーでSSH接続できないのは、3つについての不備が原因
まずは結論。以下の3つについての不備が原因であることがほとんどです。
①: ポート番号を10022( -p オプション)に指定、かつ公開鍵認証( -i オプション)で接続
②: SSH接続時のユーザー名はサーバーID。きちんとサーバーパネルから確認する(SSHコマンドの@以降にも注意)
③: 秘密鍵のパーミッションを600、その親ディレクトリ(.ssh)のパーミッションを700に
本記事では上記3つについて詳細を解説しています。
全体のシンプルな手順やSSHの流れについて知りたい方は、 エックスサーバーにSSH接続する方法 | 魔法使いのWebスクリプト をあわせてご確認ください。
以下、それぞれを詳細にみていきましょう。
①: ポート番号を10022( -p オプション)に指定、かつ公開鍵認証( -i オプション)で接続
エックスサーバーにSSH接続するのに必要な項目を確認
まず、エックスサーバー公式ドキュメントよりSSHするのに必要な情報を確認しましょう。
- エックスサーバー側でSSHをONに
- エックスサーバー側で認証キーペアを作成し、公開鍵認証(-i オプション)でSSH接続
- ポート番号は10022を指定。ssh -p 10022
参考: SSH設定 | レンタルサーバー【エックスサーバー】
ダウンロードした秘密鍵は~/.sshディレクトリにssh-keyname.keyとして保存します。このとき、.sshディレクトリがまだなければ作成しましょう。
SSH接続コマンドは基本的には下記となります。。
$ ssh -p 10022 -i ~/.ssh/ssh-keyname.key [email protected]
注: xs000000 = サーバーID (詳しくは次で述べます)
②: SSH接続ユーザー名をエックスサーバーで必ず確認!ホスト名ではなくサーバーIDを指定(SSHコマンドの@以降にも注意)
エックスサーバーの「サーバーID」と「ホスト名」は異なるもの
意外に多いのが、SSH接続の際のユーザー名を勘違いしているというケース。
サーバーIDとサーバー番号を確認しましょう。私は[sv****]がサーバーIDとばかり思ってました。
XserverでSSHを使う時にうまく行かない場合の解決ポイント | Show46
見分け方としては、接頭辞がxsで始まるものがサーバーID、svで始まるものがホスト名。
SSHログインに絶対必要なのはxsで始まる「サーバーID」であり、svで始まるホスト名は任意(用意しなくてOK)。
サーバー(ホスト名): サーバーID.xsrv.jp(お客様の初期ドメイン)
※ホスト名(sv***.xserver.jp)でも設定が可能です。ユーザー名: サーバーID 例:xsample
@以降で指定する必要がある「サーバーID.xsrv.jp = 初期ドメイン」については、サーバーパネル > ドメイン設定 から「初期化できないドメイン」として確認できます。
初期ドメインは xs000000.xsrv.jp のような形で、頭のxs000000の箇所はサーバーIDと同一。
初期ドメイン自体を確認せずともサーバーIDが分かればOKでしょう。
エックスサーバーのサーバーIDをサーバーパネル画面から確認する
繰り返しますが、SSHユーザー名はxsで始まる”サーバーID”です。svで始まるホスト名のsvxxx… とは異なりますので要注意。
必要となるサーバーIDは、サーバーパネルのログイン後画面より確認。
必ず、エックスサーバーのサーバーパネル上などで確認するようにしてください。
xs~のサーバー名を利用してSSH接続するコマンド
たとえば自分のサーバーIDをxs000000とした場合、SSH接続するコマンドは下記になります。
ssh -p 10022 -i ~/.ssh/ssh-keyname.key [email protected]
基本的にはこちらのコマンドで良いでしょう。
sv~のホスト名を利用してSSH接続するコマンド
別の指定方法として、ログイン先ホストをサーバーIDではなくsvで始まる「ホスト名」に指定する場合には注意が必要。
@以降はxsrv.jpではなく “xserver.jp” となります。ややこしいですね。
ssh -p 10022 -i ~/.ssh/ssh-keyname.key [email protected]
③: 秘密鍵と親ディレクトリのパーミッション権限を変更
下記のような、パーミッションに関するエラーメッセージとなった場合。
対応として秘密鍵とその親ディレクトリのパーミッションを確認・変更してください。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/Users/username/.ssh/ssh-keyname.key' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/Users/username/.ssh/ssh-keyname.key": bad permissions xs.....@sv***.xserver.jp: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
ローカル(クライアント)側での秘密鍵のパーミッションを600, 親ディレクトリである.sshディレクトリのパーミッションを700に変更します。
【エックスサーバー 】Permission denied (publickey,gssapi-keyex,gssapi-with-mic).のエラー イロハバンク Web制作部
パーミッションを変更するにはchmodコマンドで。秘密鍵のパーミッションを600に変更するには下記コマンド。
chmod 600 ~/.ssh/ssh-keyname.key
そもそも親ディレクトリである.sshがない場合には、mkdirで作成しておきましょう。
不可視ファイルなので確認する場合には ls -aです。
Leave a Reply