エックスサーバーにSSH接続(SFTP)を設定する方法をまとめました。
ウェブサイトの管理やファイル転送を安全に行うなら、FTPではなくSSH接続を使うのがおすすめです。
エックスサーバーのサーバーパネルでもSSH鍵を生成できますが、その場合はRSA形式になります。
RSAも安全ですが、今回は、よりセキュアで推奨されるed25519鍵を自分のパソコンで作成し、エックスサーバーに登録する手順を紹介します。
この記事では、以下の流れで解説します。
- エックスサーバーにSSH接続する方法(Mac/Windows対応)
- なぜSSH(SFTP)が安全なのか:FTP/FTPSとの違い
- FTPを実質オフにする方法(127.0.0.1制限で外部アクセスをブロック)
エックスサーバーにSSH接続する方法(Mac/Windows対応)
SSH接続の流れはMacでもWindowsでも基本的に同じです。
違うのは「ファイルが保存される場所」と「使うクライアントソフト」だけです。
手順は大きく3ステップに分かれます。
- SSH鍵ペア(秘密鍵と公開鍵)を作成する
- 公開鍵をエックスサーバーのサーバーパネルに登録する
- Cyberduck と WinSCP で SFTP 接続する
①鍵ペアを作成する
まずは、秘密鍵と公開鍵のペアを作成します。
Mac では ターミナル、Windows では PowerShell を開いて、以下のコマンドを入力してください。
ssh-keygen -t ed25519
これで、~/.ssh/
フォルダに自動的に2つのファイルが作成されます。
📌 鍵生成後にできるファイル
- id_ed25519
→ 秘密鍵(自分のPCにだけ置く。絶対に外に出さない) - id_ed25519.pub
→ 公開鍵(エックスサーバーのサーバーパネルに登録する用)
🔑 鍵ファイルの保存場所
~/.ssh/
フォルダに生成されます。なければ自動で作成されます。
💡 補足①
SSH鍵の保存先は OS によって指定方法が異なります。
- Mac:
/Users/ユーザー名/.ssh/
- Windows:
C:\Users\ユーザー名\.ssh\
💡 補足②(Mac/Linux の場合)
ssh-keygen で生成された秘密鍵ファイルは通常、自動でパーミッション 600(-rw-------)
(自分だけが読める状態)に設定されています。
基本的には気にしなくて大丈夫ですが、念のため確認したい場合は下記のコマンドを実行してください。
ls -l ~/.ssh/id_ed25519
出力が-rw-------
となっていればOKです。
※Windowsの場合は Mac/Linux のような「600」というパーミッションの仕組みはなく、代わりに NTFSのアクセス制御で通常は自分のユーザーだけがアクセス可能 です。そのため特に気にする必要はありません。
🧩パスフレーズについて
ssh-keygen
を実行すると次のように パスフレーズ(passphrase)の入力を求められます。Enter passphrase for "/Users/ユーザー名/.ssh/id_ed25519" (empty for no passphrase):
ここで入力する内容は画面に表示されません。セキュリティのため、入力欄には ●や*なども一切出ない 仕様です。
無反応に見えますが、正しく入力されていますので安心して入力してください。
👉 なお、なにも入力せずにエンターを押すとパスフレーズなしで鍵が作成されます。
セキュリティ強化のためにはパスフレーズを設定することをおすすめしますが、利便性を重視する場合は空欄でも動作します。
その後、Enter same passphrase again:
と表示され、同じパスフレーズの再入力を求められます。
一致すれば鍵の生成が完了します。
パスフレーズとは
ここで入力するパスフレーズは「秘密鍵を守るための追加パスワード」です。
- 設定した場合
→ 接続時にパスフレーズ入力が必要。もし秘密鍵が盗まれても、パスフレーズがないと使えないので安全。 - 空欄にした場合
→ 接続はスムーズ。ただし秘密鍵ファイルを盗まれると、そのまま使われるリスクがある。
🔑 セキュリティを優先するなら「設定」がおすすめです。
利便性を優先するなら「空欄」でもよいですが、秘密鍵の管理を徹底してください。
🔧 応用:複数の鍵を分けて管理したい場合
「エックスサーバー用とGitHub用でファイル名を分けたい」「セキュリティを少し強化したい」などの場合は、以下のようにオプションを追加して作成できます。
Mac の場合
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_xserver_ed25519 -C "Mac"
Windows の場合
ssh-keygen -t ed25519 -a 100 -f $env:USERPROFILE/.ssh/id_xserver_ed25519 -C "Windows"
-t ed25519
… 鍵の種類を ed25519 に指定(RSAも十分安全ですが、より高速でセキュアなed25519が近年は推奨されています。)-a 100
… セキュリティ強化のための反復回数。もし秘密鍵が盗まれても、パスフレーズ解析に時間がかかるようになります。(省略可)-f ~/.ssh/id_xserver_ed25519
… 鍵を保存する場所とファイル名。名前は自由に変えてOKですが、わかりやすく区別できる名前がおすすめです。(省略可)-C "Mac" / "Windows"
… コメント欄。PC名や用途を入れると管理がしやすいです。(省略可)
👉 Mac では~/.ssh/
でOKですが、Windows では ~/
がうまく解釈されない場合があるため、$env:USERPROFILE/.ssh/
を指定する方が確実です。
②公開鍵をエックスサーバーに登録する
作成された鍵ファイルのうち、.pub 拡張子付きのファイルが公開鍵です。このファイルの内容をエックスサーバーに登録します。
内容を確認するには、次のコマンドを実行します。
cat ~/.ssh/id_ed25519.pub
ターミナルやPowerShellに公開鍵の文字列が表示されるので、まるごとコピーしてエックスサーバーの
サーバーパネル → SSH設定 → 公開鍵を登録 にペーストして登録します。

- 登録方式:手動を選択
- ラベル:管理しやすい名前
- 公開鍵:.pubファイルの内容
③Cyberduck と WinSCP で SFTP 接続する
- Mac(Cyberduck):秘密鍵をそのまま使えるので簡単です。
- Windows(WinSCP):OpenSSH形式の秘密鍵をそのまま使えないため、PuTTY形式(.ppk)に変換する必要があります。
Mac(Cyberduck)の場合

- SFTP (SSH による暗号化 FTP)を選択
- サーバー(ホスト名)・ユーザー名をエックスサーバーの、サーバーパネル → SSH設定 → SSHソフト設定、で確認して入力する。
- ポート番号:10022
- SSH Private Key:先ほど作成した秘密鍵を選択
- 「キーチェーンに追加する」にチェックを入れるとパスフレーズがキーチェーンに追加され、次回以降入力する必要がなくなります。
これで「接続」をクリックします。

「許可」をクリックするとSFTP接続されます。
Windows(WinSCP)の場合



「すべてのファイル」か「すべての秘密鍵ファイル」を選択。

拡張子が付いていないファイルが秘密鍵なのでそちらを選択し「開く」をクリック。

「OK」をクリックし PuTTY 形式に変換する。

秘密鍵にパスフレーズを設定していると入力が求められるので入力する。

.ppk(PuTTY 形式)のファイルに変換されたので「保存」をする。

「OK」をクリック。

先ほど変換した .ppk の秘密鍵のパスになっているのを確認して「OK」をクリック。

- 転送プロコトル:SFTP
- ホスト名・ユーザー名をエックスサーバーの、サーバーパネル → SSH設定 → SSHソフト設定、で確認して入力する。
- ポート番号:10022

秘密鍵にパスフレーズを設定していると入力を求められるので入力する。

WinSCPで初めてSFTP接続すると「このサーバーのホスト鍵をキャッシュに追加しますか?」と聞かれます。
これは 「このサーバーを信頼してよいですか?」という確認 です。
承認すると、サーバーの指紋(ホスト鍵)が自分のPCに保存され、次回以降は自動で照合されるので、「承認」クリックしてください。
これでSFTP接続されます。
なぜSSH(SFTP)が安全なのか:FTP/FTPSとの違い
FTP/FTPSの仕組み
FTPやFTPSは 「ユーザー名+パスワード」 でログインします。
そのため外部からの総当たり攻撃(ブルートフォース攻撃)の対象になりやすく、パスワードが突破されると即座に不正ログインされてしまうリスクがあります。
💡 補足
エックスサーバーの場合は、一定回数パスワードを間違えるとアクセス制限が入る仕組みがあります。
ただし、完全に攻撃リスクをなくすことはできないため、より強固なセキュリティが確保できる SSH(SFTP)の利用がおすすめです。
SSH(SFTP)の仕組み
SSHには本来 2種類の認証方式 があります。
- パスワード認証
- パスワード入力でログインする方式
- 総当たり攻撃を受けるリスクがある
- 公開鍵認証
- 秘密鍵と公開鍵のペアを利用する方式
- 秘密鍵を持っていない限りログインは不可能
- 総当たり攻撃は成立しない
💡 補足:秘密鍵とは?
秘密鍵は単なる文字列ファイルではありません。
暗号学的に生成された非常に大きな数(鍵)を記録したもので、数学的な仕組みによって守られています。
- 秘密鍵を知っていれば、対応する公開鍵で認証ができる
- 公開鍵から秘密鍵を逆算するのは現実的に不可能(天文学的な計算量が必要)
そのため、秘密鍵さえ流出しなければ安全という強固な仕組みになっています。
また、SFTPはセキュリティ面以外にもメリットがあります。
たとえば 通信がすべて暗号化される、22番ポート(エックスサーバーでは10022)だけで動作するため接続が安定しやすい、多くのサーバーやソフトで標準対応しているといった点です。
エックスサーバーの仕様
エックスサーバーのSSH接続では、セキュリティ強化のため最初から公開鍵認証のみが採用されています。
パスワード認証は提供されていないため、秘密鍵を持っていない限り突破は不可能です。
まとめ
- FTP/FTPS → パスワード突破リスクあり
- SSH(SFTP) → 公開鍵認証オンリーなので秘密鍵を持っていない限り突破は不可能。
FTPを実質オフにする方法(127.0.0.1制限で外部アクセスをブロック)
エックスサーバーでは契約時に自動で「FTPアカウント」が作成されます。
ただ、実際にはSSH(SFTP)だけを使っていれば、多くの人にとってFTPはほとんど使わない機能です。
「使わないのに開けっぱなしにしておくのは不安…」という場合、完全に削除はできませんが、外部からアクセスできないように制限をかけることができます。
具体的には FTPアクセスを 127.0.0.1(ループバックアドレス=サーバー自身)に限定することで、外部からは一切使えなくなり、サーバーパネルのファイルマネージャーだけが利用可能な状態にできます。
手順
- サーバーパネルにログイン
エックスサーバーの「サーバーパネル」にアクセスします。 - FTP制限設定を開く
左メニューから 「FTP制限設定」 をクリック。 - 設定対象
初期FTPしかない場合は「サーバーアカウント全体」を選択。
(もし追加でFTPアカウントを作っている場合は、各々個別に設定が必要です) - IPアドレス
「ファイルマネージャのIPアドレス(127.0.0.1)」 に変更します。

この設定をするとどうなる?
- 外部からのFTP総当たり攻撃を防げる
- 自分はSFTP(SSH)を使うので困らない
- 「使わないのに残しておく」状態から解放される
🔒 まとめ
FTPをオフにすることはできませんが、127.0.0.1(ループバックアドレス)のみに制限すれば、実質的に外部からは使えない状態にできます。
SFTP(SSH)のみを使う場合は、この設定をしておくと安心です。
コメント