セキュリティーは、低いよりは高くしておくに越した事はありません。
今回は、SFTPという接続方法を利用して、FTPよりは安全にファイルを転送する方法を紹介したいと思います。
以前、「エックスサーバーってSFTPでファイルをアップロードできないのか?」と思い調べたことがありました。
そしたら、ちゃんとできるようになっていたので、その時設定した方法を紹介したいと思います。
ちなみに、エックスサーバーについての詳細は以下。
photo by Ben Smith
目次
FTPとSFTP
エックスサーバーを利用している多くの人が、サーバーにファイルをアップロードするのに、FTPなどを使用しているかと思います。
ただ今回は、そのFTPではなく、もっとセキュリティーの高いSFTPというプロトコルを利用したファイル転送の方法です。
FTPとSFTPの違いは、簡単に説明すると以下のようになります。
- FTP:データ自体(接続ID、パスワード含む)暗号化されず、そのまま通信している
- SFTP:FTPで送受信するデータを、暗号化して通信している
簡単に例えるとFTPの場合は、ただの糸電話みたいなものかと思います。
糸電話の場合は、双方、生の声(データ)をやりとりするので、間に枝をつければ、盗聴できる状態にあります。
photo by Paul Downey
反面、SFTPの場合だと、声(データ)を暗号化してから糸を震わせる事になるので、間に盗聴が入っても、声(データ)自体が暗号化されているので、盗聴者は盗聴できたとしても何を言っているのかわからない状態になります。
そういったことで、ファイルの転送をFTPからSFTPにすると、通信の安全性を大きく上げることができます。
ただ、SFTPで接続するとなると、設定時に少しだけ余計に手間がかかります。
けれど覚えてしまうと、そこまで難しいこともしないので、セキュリティーを高めたい場合は、SFTPを使った方法がおすすめです。
今回は、僕が使用しているエックスサーバーの設定を例として紹介します。
主な手順
エックスサーバーで、SFTPを利用するのに必要な主な手順は以下です。
- エックスサーバー側でSSHの利用を有効にする
- 暗号化するための鍵を作成する
- FileZillaに秘密鍵を登録
- FileZillaでサーバー設定をする
今回は、FileZillaを利用した、SFTP接続の方法を紹介したいと思います。
SSHの利用を有効にする
まずは、エックスサーバーでSFTPを利用するために、SSHの設定を有効にします。
とりあえず、エックスサーバーのサーバーパネルに移動してログインしてください。
すると、以下のような管理パネルが表示されるので、「SSHの設定」をクリックします。
すると、以下のような「SSH設定」画面が表示されるので、「ONにする」ボタンを押して、SSHの設定を有効にしてください。
ボタンを押すと、次のような画面が表示されます。もう一度、「SSH設定」タブをクリックします。
以下のように、状態が「ON」になっていれば設定は完了です。
あと、通常SSHでの接続ポートは22を使うのが一般的ではありますが、エックスサーバーではおそらくセキュリティー性を高めるため10022ポートを利用しているのだと思います。
暗号化するための鍵を作成する
次に、SSH接続に必要な、公開鍵認証用の鍵ペア(公開鍵・秘密鍵)を生成します。
先程の「SSH設定」画面から「公開鍵認証用鍵ペアの生成」タブをクリックします。
すると、以下のようなパスフレーズ入力欄が表示されるので、「パスフレーズ」を入力して「公開鍵認証用の鍵ペア生成(確認)」ボタンを押します。
パスフレーズは、覚えやすくて忘れにくいパスワードみたいなもので良いと思います。
追記:FileZillaで秘密鍵の登録をするときに、結局パスフレーズが無効化されるので、パスフレーズは空欄でも良いのかも。
すると、以下のような画面になります。
「公開鍵認証用の鍵ペア生成(確定)」ボタンを押すと、鍵ペアが生成されダウンロードできるようになります。
ダウンロードされるファイルは、「サーバID.key」のようなファイル名になります。
FileZillaに秘密鍵を設定する
次に、FileZillaの設定です。
FileZillaは、FileZilla プロジェクト日本語トップページからダウンロードすることができます。
ダウンロードしたFileZillaを起動すると以下のようになります。
まずは、FileZillaの設定画面からSFTPクライアントの設定を行います。
メニューの「編集→設定」を選択します。
すると、以下のような、「設定」ダイアログが表示されるので、①SFTPページを選択し、②「鍵ファイルを追加」ボタンを押します。
すると、以下のような「鍵ファイルの変換」ダイアログが表示されるので「はい」を選択してください。
すると以下のように「パスワードが必要」ダイアログが表示されるので、先程エックスサーバーで入力した「パスフレーズ」を入力し「OK」ボタンを押します。
追記:エックスサーバーでパスフレーズを空欄で登録した場合は、この作業は不要になります。
すると、秘密鍵を保存するためのダイアログが表示されるので、秘密鍵となるファイルを、任意の場所に保存してください。(※このファイルは、ずっとそこに保存しておいてください。)
すると以下のように、秘密鍵が登録されます。
FileZillaでサーバー設定をする
最後に、サーバー設定を行うとSFTPでエックスサーバーに接続できるようになります。
メニューの「ファイル→サイトマネージャ」を選択します。
すると、以下のようなダイアログが表示されるので、「新しいサイト」ボタンをクリックします。
すると以下のような画面が表示されます。
サーバーの設定情報は、以下のように入力します。
- ホスト:サーバーID.xsrv.jp(FTPのホストと同じ)
- ポート:10022
- プロトコル:SFTP – SSH File Transfer Protocol
- ログオンの種類:通常
- ユーザー:サーバーID(サーバーパネルにログオンする時のID)
- パスワード:パスワード(FTPのパスワード)
設定が完了したら「接続」ボタンを押します。
すると、以下のような「不明なホスト鍵」ダイアログが表示されるので、「常にこのホストを信用し、この鍵をキャッシュに追加」にチェックを付けて「OK」ボタンを押します。
最後に、「接続」ボタンを押せば、SFTPでエックスサーバーにファイルを転送することができるようになります。
まとめ
エックスサーバーにFileZillaでSFTP転送を行うには、このような手順が必要です。
FTP接続より、SFTP接続の方が、初期設定時に多少の手間はかかりますが、登録してしまえば、あとの使い方は同じです。
「FTPでそんなたいしたデータを転送しているわけじゃないから」と思うかもしれませんが、とりあえず、FTPよりSFTPにしている方が、運用方法さえしっかりしていれば、安全性が高いのは間違いありません。
まだFTPを利用している方で、「大事なサイトのセキュリティーを向上させたい」なんて場合は、ぜひ。
FileZillaでエックスサーバーにSFTP接続で安全にファイル転送する方法(2015.2.21)について拝見し、同じようにやってみたのですが、filezillaの画面で赤字で《エラー サーバに接続できませんでした》と最終列で表示されます。他にも緑字でレスポンスなどいろいろ出てきますが、どこが間違っているかさっぱりわかりません。
アドバイスなどありましたら、教えていただけないでしょうか。