サーバーとデータをやり取りするファイル転送ソフトとして人気の高い「WinSCP」にて、暗号化された通信である「SCP」「SFTP」通信をするための設定方法のご紹介です。
通常のFTP通信では暗号化がされておらず危険なため、暗号化された通信である「FTPS」や「SFTP」「SCP」による通信が推奨されます。フリーで利用できる「WinSCP」ではこれら暗号化されたFTP通信が利用できますが、今回はソフト名にもなっている「SCP通信」と「SFTP通信」ができるように設定してみたいと思います。
SCPとSFTP通信にはSSHの利用が必須になりますので、サーバーの設定で公開鍵認証が利用できるように設定していきます。この記事では人気の高いレンタルサーバーである「エックスサーバー」を対象として設定していきます。
※Adobe Dreamweaverでの設定方法も解説しています。

通信プロトコル FTP、FTPS、SFTP、SCP
設定の前に、いくつか存在するFTP通信の種類について簡単に書いてみます。
FTP
「FTP【File Transfer Protocol】」とは、サーバーに対してファイルを転送するためのプロトコル(通信の約束事)です。
インターネット黎明期から存在しているファイル転送プロトコルで、現代でも多くの転送ソフトで実装はされています。ただ、古い時代に規格されたプロトコルのためセキュリティーに難があり、特にユーザー名やパスワードなどの情報も暗号化がされていないことから、ネットワーク上で通信を傍受されると容易に転送内容が流出してしまう危険性があります。
現代では、暗号化されたFTP通信である「FTPS」や「SFTP」「SCP」の利用が推奨されています。
https://www.kagoya.jp/howto/it-glossary/web/ftp/
FTPS
「FTPS【File Transfer Protocol over SSL/TLS】」は、「SSL」または「TLS」という暗号化技術を組み合わせてFTP通信を安全に行えるようにしたプロトコルです。
「SSL(Secure Sockets Layer)」と「TLS(Transport Layer Security)」は、ともにインターネット上の通信を暗号化するための仕組みです。この暗号化技術をFTP通信にも利用したものが「FTPS」で、サーバーと通信をするならば最低でもこの通信プロトコルを利用することが推奨されます。
暗号化のために必要となる「SSLサーバー証明書」は「認証局」と呼ばれるところから発行されており、正式な証明書がサーバー上で実装されていれば「SSL/TLS」が利用できます。
難しく書いていますが日常的なブラウジングでもお世話になっており、例えばURLの頭部分で「https」(あるいは鍵マークの表示)となっているウェブサイトがあれば、それは「SSL/TLS」によってサーバーと私たちクライアント側との通信が常に暗号化されている証拠で、途中で通信が傍受されても情報が流出しないようになっています。
近年のレンタルサーバーは無料でSSL/TLS通信(https化)できるようになっているところが多いですので、そこまで気負わずとも実装はできるかと思います。因みに、エックスサーバーでは無料でSSL設定ができます。このときの認証局はフリーの「Let’s Encrypt」です。
https://college.globalsign.com/ssl-pki-info/ssl-tls/
https://www.xserver.ne.jp/manual/man_server_ssl.php
SFTP
「SFTP【SSH File Transfer Protocol】」は、「SSH」という暗号化、認証技術を組み合わせてFTP通信を安全に行えるようにしたプロトコルです。
SSH【Secure Shell】は、暗号や認証の技術を利用して安全に通信するためのプロトコルです。暗号化されるという点では「SSL/TLS」と同じなのですが、SSHはサーバー管理者がサーバーへの接続のほか遠隔操作を行うことも想定しており、認証情報も含め通信全体を暗号化するなどよりセキュアな通信方法を目指して開発されています。
多くのレンタルサーバーでも利用できるようになっているかと思いますが、より強固な暗号化技術である公開鍵認証方式を利用するためには少し操作が必要になります。因みに、エックスサーバーはSSHのパスワード接続は禁止されており、公開鍵認証方式のみ許可しています。
また、「SSL/TLS」では必要だった「SSLサーバー証明書」が無くとも利用できること、SSHを利用しているのでコマンドによるサーバーの操作が可能であるなど、場合によってはこちらの方が運用しやすいこともあります。
今回の記事ではWinSCPでの設定方法を解説いたしますが、このソフトウェアは「SFTP」の設定が可能です。ただ、秘密鍵は「PuTTY形式」のみサポートしており、エックスサーバーからダウンロードできる「OpenSSH形式」の鍵には対応していないので、PuTTY形式に変換する必要があります。変換はWinSCP内で可能です。
https://www.kagoya.jp/howto/it-glossary/server/ssh/
SCP
SCP【Secure Copy Protocol】は、SFTPと同様に「SSH」を利用して通信を暗号化したプロトコルです。
SSHを利用しているのでセキュリティー的にはSFTPとほぼ同等です。機能的な違いはいくつかあるのですが、ここでは大体同じものと思っていただいて大丈夫です。
簡単な違いとしては、「SCP」の方が通信は早いようですがファイル転送に関してはあまり細かい動作をせず通信が途切れると続行できないこと、「SFTP」はファイル転送も重視しており通信の中断があっても途中から再開が可能など高機能ですが通信速度は少し遅め、と解説されていることが多いです。
WinSCPではこちらの通信も可能で、設定はSFTPのものと同じです。ただ、同様に秘密鍵をPuTTY形式へ変換する必要はあります。
https://atmarkit.itmedia.co.jp/ait/articles/0606/27/news135_2.html
WinSCPで「SCP」「SFTP」による接続設定方法
WinSCPでは通信速度に優れた「SCP」のほか、高機能な方の「SFTP」も利用できますので、当ウェブサイトで利用しているレンタルサーバーである「エックスサーバー」での設定方法を書いてみます。記事執筆時のWinSCPのバージョンは「5.19.6」です。
今回はSSHを最初に有効化させます。SSH設定の公式マニュアルは以下より確認できます。
https://www.xserver.ne.jp/manual/man_server_ssh.php
「サーバーID.key」というファイルがダウンロードされますので保存してください。
これが秘密鍵で、このkeyファイルとパスフレーズをセットにして設定することでサーバーへの認証が完了する仕組みになっています。仮にパスフレーズが合っていても、それに対応するサーバーの公開鍵、そしてセットで作られた手持ちの秘密鍵が無ければ公開鍵暗号の認証は通りません。
逆に言いますと、このファイルとパスフレーズが漏洩するとサーバーにSSH接続可能な状態になってしまうため、keyファイルも厳重に管理してください。
ただ、このキーは「OpenSSH形式」なのでWinSCPでは利用できません。後にWinSCP内で「PuTTY形式」へ変換して利用します。設定したパスフレーズが分かれば簡単に変換できます。

WinSCP起動し、接続の設定を行います。まずは「セッション」で下記のように設定してください。
転送プロトコル | 「SCP」または「SFTP」を指定します。利用したいプロトコルを選択してください。どちらでも以降の手順は同じです。 |
---|---|
ホスト名 | サーバーのアドレス(ホスト名)を入力します。忘れた場合はサーバーパネルの「サーバー情報」や、「サブFTPアカウント」→「FTPソフト設定」から確認できます。 |
ポート番号 | 今回はエックスサーバーで設定していますので、指定された通り「10022」と入力してください。 |
ユーザー名 | サーバーアカウント設定完了メールに記載のFTPユーザー名を入力します。忘れた場合はサーバーパネルの「サブFTPアカウント」→「FTPソフト設定」で確認できます。サブFTPアカウントを作成してそちらで接続したい場合はサブアカウントの方の情報を入力します。 |
パスワード | 「SCP」「SFTP」では公開鍵暗号方式で認証するのでFTPパスワードは不要です。空欄で大丈夫です。 |

エックスサーバーでダウンロードされる秘密鍵は「OpenSSH形式(.key)」であるため、WinSCPで利用できるように「PuTTY形式(.ppk)」に変換する必要があります。
「秘密鍵 OpenSSH を PuTTY 形式に変換しますか?」と聞かれたら、変換するために「OK」を選択します。変換のためにパスフレーズを聞かれますので、サーバーで設定したパスフレーズを入力してください。表示が文字化けすることもありますが特に問題ありませんのでそのまま進めます。
変換が完了したら「ユーザーID.ppk」ファイルを保存してください。



まとめ
お疲れさまでした。これでWinSCPのSCP、SFTP接続設定を一通り書けたかと思います。
エックスサーバーの公式マニュアルではWinSCPの解説はなく、また他のソフトで解説があったとしても「FTPS(FTP over SSL/TLSの方)」ならば解説があるのですが、SSHを使ったSFTPの解説は無かったので記事にしてみました。
「FTPS」がダメというわけでもなくちゃんと暗号化はされますので、利用したい方を使っていただければよいとは思いますが、SSHを利用したSFTP(SCP)の方がコマンドを利用できたりなど高機能で、特に「WinSCP」ではサーバー上のファイルを遠隔で圧縮できるなどサーバー操作ができるようになりますので、SFTP(SCP)の方が便利と言えば便利です。
ただ、秘密鍵の管理が別途必要になりますので、この点は注意していただければと思います。
因みに、今回はエックスサーバー上でパスフレーズを設定して鍵のペアを生成しましたが、FTPソフト側で公開鍵を設定した後にサーバーに登録、秘密鍵をダウンロードする方法もあります。「WinSCP」ではこの方法でもSCP通信ができますが、サーバー上にある既存の設定は上書きされますので注意してください。
参考サイト
https://support.xserver.ne.jp/faq/service_ftp_overssl.php
以下のサイトでは、WinSCPで公開鍵まで作成し、サーバーに登録する場合の設定方法が書かれています。
https://nelog.jp/xserver-winscp-sftp
コメント
コメント欄を開く