エックスサーバー内でコマンドを使用している人の中には、
FTPソフトでいちいちログインするの面倒だなぁ…
と思っている人もいるでしょう。
であれば、PCとエックスサーバーをSSH接続し、PCからエックスサーバー内をコマンドで操作できるようにしてしまえばいいのです。
しかも1度設定してしまえばずっとコマンド操作できます。
なお、この記事ではFTPソフトはWinSCPを使用します。WinSCPをインストールしていない方は、公式サイトからインストーラーをダウンロードできます。
エックスサーバーの管理画面上での操作
エックスサーバーにSSH接続するために、まずは管理画面での設定が必要です。
設定することは以下の通り。
- SSHの設定をONにする
- 公開鍵認証用の鍵ペアを生成する
SSHの設定をONにする
エックスサーバーの管理画面にログインしたら、「SSH設定」をクリックします。
次に、「ONにする」を選び、「設定する」をクリックします。
公開鍵認証用の鍵ペアを生成する
「公開鍵認証用鍵ペアの生成」のタブに切り替え、パスフレーズには何も入力せずに「確認画面へ進む」をクリックします。
「※パスフレーズが入力されていません。」と警告が出ますが、ここでパスフレーズを設定してしまうと、SSH接続するたびにパスフレーズの入力を求められて面倒です。
それに、パスフレーズを忘れてしまうと、また公開鍵認証用鍵ペアを生成しないといけなくなります。
なので、セキュリティを重視する人や共用のPCを使っている人でなければ、設定する必要はないと思います。
「生成する」を押すと秘密鍵のファイルがダウンロードされます。
ダウンロードされたファイルの名前を「id_rsa_for_xserver.key」に変更しましょう。
これでエックスサーバーの管理画面上での操作は終了です。
WinSCPを使ってエックスサーバーにSSH接続
それでは本題の、WindowsでエックスサーバーにSSH接続する方法を紹介します。
SSHコマンドが使えるかを確認
本題に入る前に、まずはSSHコマンドが使えるかを確認します。
コマンドプロンプト、もしくはPower Shellを起動して、以下のコマンドを実行します。
cd C:\Users\(ユーザー名)\
ssh -V
もし以下のように表示されれば、SSHコマンドが使えます。
もし、以下のように表示されれば、SSHコマンドが使える状態です。
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
もし上記のように表示されなければ、OpenSSHの設定方法を参考に設定してみて下さい。
秘密鍵ファイル保存用ディレクトリの作成
次に、先ほどダウンロードした秘密鍵ファイルを保存するディレクトリを作成しましょう。
ユーザーフォルダの下に「.ssh」のフォルダを作成します。
コマンドプロンプトを開いて以下のコマンドを入力。
mkdir .ssh
すると、「C:\Users\(ユーザー名)\.ssh」というディレクトリができているはずです。
このディレクトリ内に、先ほどダウンロードして名前を変えた「id_rsa_for_xserver.key」のファイルを移動させます。
SSH接続するために.ppkファイルを生成
さらに、WinSCPを使って.ppkファイルを生成します。
WinSCPを開いて、「ツール」->「PuTTYgenを実行」を選択します。
「Load」をクリック。
ここで、先ほど保存した秘密鍵ファイルの「id_rsa_for_xserver.key」を選択します。
「開く」ボタンの上のところを『All Files(*.*)』にすると、 「id_rsa_for_xserver.key」 のファイルが出てきます。
そして、「開く」のボタンを押します。
OKで次に進みます。
「Save private key」をクリックします。
再度、パスフレーズが無い旨の警告が表示されますが、無視して「はい」を押します。
ファイルの保存場所を聞かれるので、先ほど作成した「C:\Users[User Name].ssh」のディレクト内に保存します。
ファイル名は「xserver_key.ppk」などとしておけばいいでしょう。
(参考元)Xserver(エックスサーバー)にWinSCPで接続手順・設定 | Windows10|tabalog
WinSCPを使ってSSH接続の確認
WinSCPのログイン画面に戻ります。
- 転送プロトコル:SFTP
- ホスト名:契約時のホスト名
- ユーザー名:契約時のユーザー名
- ポート番号:10022
パスワードは入力不要です。
ホスト名とユーザー名は、エックスサーバーを契約した時に送られてくる『【Xserver】■重要■サーバーアカウント設定完了のお知らせ』という件名のメールに記載されています。
もしくは、エックスサーバーの管理画面を見れば分かります。
- ユーザー名は、「アカウントデータ」の下のサーバーID
- ホスト名は、「アカウント」->「サーバー情報」
に記載されています。
次に、「設定」をクリックします。
左のメニューの「SSH」->「認証」をクリックし、先ほど生成した.ppkファイルを選択します。
「OK」を押します。
最後に「ログイン」を押せばSSH接続できますが、その前にログイン情報を「保存」しておくと便利です。
なお、「ログイン」を押すと以下のような警告が表示されるかもしれませんが、「はい」を選べばOKです。
コマンドプロンプトからSSH接続する設定
無事ログインできるのを確認したら、コマンドプロンプト(もしくはPowerShell)からSSH接続するための設定を行います。
コマンドプロンプトで以下のコマンドを入力して、「C:\Users\(ユーザー名)\.ssh」のディレクトリ内に「config」というファイルを作成します。
cd C:\Users\(ユーザー名)\.ssh
type nul > config
作成した「config」ファイルをテキストエディタで開き、以下のコードを追記します。
Host xserver
HostName sv(サーバーNo.).xserver.jp
User (XServerのユーザーID)
IdentityFile ~/.ssh/id_rsa_for_xserver.key
Port 10022
TCPKeepAlive yes
RemoteCommand cd (ディレクトリのパス); $SHELL -il
RequestTTY yes
なお、『RemoteCommand cd (ディレクトリのパス); $SHELL -il』のコードで、SSH接続した時にデフォルトで開くディレクトリを指定できます。
例えば、WordPressのテーマのディレクトリを指定したければ、
RemoteCommand cd tenshoku-miti.com/public_html/wp-content/themes/cocoon-child-master; $SHELL -il
などのように指定します。
最後に、コマンドプロンプトで以下のコマンドを入力すればSSH接続できます。
ssh xserver
以下のような確認が出たら、「yes」と入力してEnterを押します。
The authenticity of host '[Xserverのホスト名]:10022 ([IPアドレス]:10022)' can't be established.
ED25519 key fingerprint is SHA256:[フィンガープリント].
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
以下のように表示されたら、無事SSH接続できています。
Warning: Permanently added '[[XServerのホスト名]:10022' (ED25519) to the list of known hosts.
[Xserverの接続先]$
(補足)複数の接続先を指定する方法
先ほどの『RemoteCommand~』のコードを使えば、複数のディレクトリへの接続を使い分けることができます。
例えば、本番環境とステージング環境が同じサーバー内にあるときに、コマンドプロンプトからそれぞれのディレクトリにダイレクトに接続できます。
例えば、以下のコードを「config」ファイルに追記します。
Host xserver
HostName sv[Your HostName].xserver.jp
User [Your User Name]
IdentityFile ~/.ssh/id_rsa_for_xserver.key
Port 10022
TCPKeepAlive yes
RemoteCommand cd [Access Directory]; $SHELL -il
RequestTTY yes
Host xserver-stg
HostName sv[Your HostName].xserver.jp
User [Your User Name]
IdentityFile ~/.ssh/id_rsa_for_xserver.key
Port 10022
TCPKeepAlive yes
RemoteCommand cd [STG Directory]; $SHELL -il
RequestTTY yes
そしてコマンドプロンプトで、
ssh xserver
と入力すれば本番環境に、
ssh xserver-stg
と入力すればステージング環境に接続できます。
最後に|快適なSSH接続ライフを!
WindowsPCをエックスサーバーにSSH接続する方法からコマンドプロンプトでコマンド操作できるようにするところまでを紹介してきました。
僕はWordPressをGit管理するために、コマンドプロンプトからSSH接続できたほうが便利だよな~と思ってこの方法を実践し、記事にまとめました。
僕と同じようにWordPressをGit管理したい人は、やり方を別の記事にまとめたので、合わせてご覧ください。