情報の漏えいなど、セキュリティ対策が強く叫ばれる昨今ですが、Web製作の現場においては未だに「FTP」によるファイル転送が主流となっています。
クライアントさんへサーバー情報をお願いすると、FTP情報が送られてくることもよくあります。
最近のレンタルサーバーはほぼすべて、FTPより安全な「SFTP」を簡単に利用できるようになりました。「SFTP」の基礎知識や、あまりプログラミングに詳しくない方でもできる導入方法を解説します。
基礎知識編
SFTPについて知っておいた方がよいことが、いくつかあります。
FTP? FTPS?? SFTP??? SSH????
Web製作で耳にするサーバー接続に関する用語は、主に以下の4つです。
- FTP
- FTPS
- SFTP
- SSH
「SSH」は接続技術です。黒い画面でサーバーに接続してコマンドを打ち込む、アレです。他の3つはファイルの通信規約、さらにざっくり言うと転送方式です。
- FTP
- 旧来の通信規約です。暗号化されないため。外部から傍受できてしまいます。
- FTPS
- ロリポップなどで利用できる通信規約です。FTPで送受信するデータを、SSL証明書を通して暗号化します。一見安全そうですが、安価なサーバでは証明書自体が安全性の薄いものであることが多いです。
- SFTP
- FTPで送受信するデータを、先述の「SSH」の技術を利用して暗号化します。
SFTPには2種類の接続方法がある
接続方法は以下の二種類です。鍵認証方式は面倒ですが、該当する端末でなければ接続できないため、高い安全性があります。こちらを利用できるなら利用したいところです。
- パスワード認証
- IDとパスワードで接続します。
- 鍵認証
- ふたつの「鍵ファイル」のペアを作り、「公開鍵」をサーバーに、「秘密鍵」を利用する端末の決められた場所に置いて接続します。
利用できる接続方法は、サーバー会社によって違う
ややこしい話ですが、サーバー会社によってSSH・SFTPがどちらの方法で接続できるかが異なります。
私が把握している限りでは、主要レンタルサーバー各社は以下の通りです。オンラインヘルプを「SFTP」で検索すると大体書いてありますが、情報が古いことがあります。
※CPI = ここでは「CPIレンタルサーバーACE01」を指します
サーバー会社 | SFTP | SSH |
---|---|---|
CPI | パスワード認証のみ | 鍵認証のみ(2016年2月以降) |
ロリポップ!レンタルサーバー | パスワード認証のみ | パスワード認証のみ |
XSERVER | 鍵認証のみ | 鍵認証のみ |
さくらのレンタルサーバー | 両方 | 両方 |
CPIに関する補足
来月以降、SSHでは鍵認証方式が必須となりますが、SFTPでは利用できません(CPI山田さん、その節はアドバイスありがとうございます)。
両方利用したい場合は鍵ペアとFTPアカウント、それぞれ設定してください。
また、接続先ホストが最初のドメインの場合と、ふたつ目以降のドメインの場合で異なります。
- 最初のドメイン
- 指定されたIPアドレスとなります。
- ふたつ目以降のドメイン
- 各ドメイン名となります。
実装編
ほとんどのレンタルサーバーでは、「SSH」は初期状態で無効になっています。SSH設定のページへ移動して「有効」にしてください。
パスワード認証の場合:アカウントの作成
FTPとほぼ同じです。技術的に特に難しいことはありません。
- ロリポップ!レンタルサーバー・さくらのレンタルサーバーの場合
- 指定された「ホスト」「ポート番号」「ID」「パスワード」で接続します。ロリポップは管理画面の「SSH」ページ、さくらは下記のページに書いてあります。
SSH について|さくらインターネット公式サポートサイト
- CPIの場合
- FTPアカウントを作成し、指定された「ホスト」「ポート番号」で接続するとFTPではなくSFTPになります。ポート番号はコントロールパネルの「サーバー情報」の下の方に書いてあります。
鍵認証の場合:秘密鍵の入手
まず「公開鍵」と「秘密鍵」を作成し、秘密鍵を入手します。
- さくらのレンタルサーバーで鍵認証を利用したい場合
- SSHコマンドで公開鍵を設置しなければならないため、他のサーバーより難しいです。下記リンクを参照してください。
さくらレンタルサーバーにSSHで公開鍵ログインしました – Qiita - エックスサーバーの場合
- コントロールパネルのSSHのページで、鍵のペアを発行します。SFTPを利用する端末でログインし、パスフレーズ(任意のパスワード)を入力すると、自動的にダウンロードがはじまり「秘密鍵」を入手できます。
秘密鍵を配置する
秘密鍵のファイルは、SFTPを利用する端末内の以下の場所に置いてください。
- Windows
- c:/Users/[ユーザ名]/.ssh
- MacOS
- /Users/(ユーザー名)/.ssh/
- 該当ディレクトリがなければ作ってください。
- ドットではじまるディレクトリなので、MacOSは設定を変更していなければFinderで見ることができません(Web製作をしていれば見えるようになっているはずなので、方法は割愛します)。
- 端末が複数ある場合は、鍵も複数発行し、それぞれの端末に秘密鍵を置くことになります。
SFTPクライアントの設定
- Filezillaの場合
- 環境設定内の「SFTP」画面で秘密鍵を登録してください。ファイル形式の変換を促すダイアログが表示されるので、許可してください。
以降は「接続の種類」に「SFTP」を指定し、FTPと同様にホスト・ポート・ID・パスフレーズを設定するとSFTPで接続できるようになります。
- Transmitの場合
- こちらも「プロトコル」に「SFTP」を指定し、FTPと同様にホスト・ポート・ID・パスフレーズを設定するとSFTPで接続できるようになります。
秘密鍵は、鍵アイコンをクリックして登録します。鍵を登録できないエラーが出る場合は、こちらの記事を別途参照してください。
「Transmit」の鍵認証のSFTP接続で「ファイルは未サポートの形式です。」とエラーが出るときの対処 | そのほか | CMSテクニック集 | CM3S
まとめ
解説は以上です。
AWSやVPSの場合は、さくらのレンタルサーバーの鍵認証に近い手順になります。ネット上にはかなり情報があると思うので検索してみてください。
SFTP、特に鍵認証方式は、案件ごと・サーバーごとに秘密鍵を作ることになるため、多数の案件を同時に扱うWeb製作者にとっては最高にわずらわしいです(私も短期間のテストサーバーであれば秘密鍵までは作ら…うわやめろなにをする)。
それでも「機密情報を扱う仕事である」という自覚を持って、できる限り安全に業務を進めたいものです。