サーバーとデータをやり取りするファイル転送ソフトとして人気の高い「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
「エックスサーバー」にログインし、「トップページ」から「サーバー管理」を開きます。
サーバーパネル内の「SSH設定」を開きます。
「SSH設定」タブ内で状態を「ON」に変更し、「設定する」ボタンを押してSSHを有効化します。状態が「ON」になったのを確認してください。
また、ここで「SSH接続時のポート番号について」という注意書きがありますが、書かれている通り接続ポートが【10022】になることは覚えておいてください。後にこの番号を設定します。
「公開鍵認証用鍵ペアの生成」タブに移り、ここで「パスフレーズ」を設定します。
パスフレーズは任意のものを設定してください。パスフレーズはいわゆるパスワードのような役割を持っており、これを元にして公開鍵の鍵ペアを生成します。このため、パスフレーズを推測されないようなるべく複雑かつ長いフレーズを入力することが推奨されます。
設定するパスフレーズを忘れないよう、パスワード管理ソフトなどで厳重に管理してください。
パスフレーズを入力したら「設定する」ボタンを押してください。
確認画面に移ります。設定したパスフレーズとメモした内容に間違いなどが無いようでしたら「生成する」ボタンを押してください。
注意書きにもある通り、以前設定した公開鍵情報がある場合は設定が上書きされ、以前の秘密鍵では認証できなくなるので注意してください。
「サーバーID.key」というファイルがダウンロードされますので保存してください。
これが秘密鍵で、このkeyファイルとパスフレーズをセットにして設定することでサーバーへの認証が完了する仕組みになっています。仮にパスフレーズが合っていても、それに対応するサーバーの公開鍵、そしてセットで作られた手持ちの秘密鍵が無ければ公開鍵暗号の認証は通りません。
逆に言いますと、このファイルとパスフレーズが漏洩するとサーバーにSSH接続可能な状態になってしまうため、keyファイルも厳重に管理してください。
ただ、このキーは「OpenSSH形式」なのでWinSCPでは利用できません。後にWinSCP内で「PuTTY形式」へ変換して利用します。設定したパスフレーズが分かれば簡単に変換できます。
WinSCP起動し、接続の設定を行います。まずは「セッション」で下記のように設定してください。
転送プロトコル | 「SCP」または「SFTP」を指定します。利用したいプロトコルを選択してください。どちらでも以降の手順は同じです。 |
---|---|
ホスト名 | サーバーのアドレス(ホスト名)を入力します。忘れた場合はサーバーパネルの「サーバー情報」や、「サブFTPアカウント」→「FTPソフト設定」から確認できます。 |
ポート番号 | 今回はエックスサーバーで設定していますので、指定された通り「10022」と入力してください。 |
ユーザー名 | サーバーアカウント設定完了メールに記載のFTPユーザー名を入力します。忘れた場合はサーバーパネルの「サブFTPアカウント」→「FTPソフト設定」で確認できます。サブFTPアカウントを作成してそちらで接続したい場合はサブアカウントの方の情報を入力します。 |
パスワード | 「SCP」「SFTP」では公開鍵暗号方式で認証するのでFTPパスワードは不要です。空欄で大丈夫です。 |
セッション情報を入力したら右下の「設定」を選択してください。
左のメニューから「認証」を選択し、右の「認証条件」で「秘密鍵」までのリンクを指定させます。
先ほどダウンロードした秘密鍵が保存されているフォルダまで行きます。ただ、初期設定ではPuTTY形式のファイル(.ppk)しか表示されない設定ですので、エクスプローラー右下の表示設定で「すべてのファイル」にしてKeyファイルを表示できるようにします。
表示されたらこのキーファイルを選択してください。
エックスサーバーでダウンロードされる秘密鍵は「OpenSSH形式(.key)」であるため、WinSCPで利用できるように「PuTTY形式(.ppk)」に変換する必要があります。
「秘密鍵 OpenSSH を PuTTY 形式に変換しますか?」と聞かれたら、変換するために「OK」を選択します。変換のためにパスフレーズを聞かれますので、サーバーで設定したパスフレーズを入力してください。表示が文字化けすることもありますが特に問題ありませんのでそのまま進めます。
変換が完了したら「ユーザーID.ppk」ファイルを保存してください。
変換が完了すれば.ppkファイルまでのパスが設定されますので「OK」を選択して戻ります。
通常はこれ以外の設定は初期設定のままで大丈夫ですが、もし踏み台サーバーを経由させたい場合は「エージェントの転送を許可する」にもチェックを入れてください。
最初の画面に戻ったら「保存」を選択、「セッションの保存名(任意)」やフォルダなどを決めて「OK」を押しセッションを保存します。
これですべての設定が完了しましたので、最後に「ログイン」を選択してください。
サーバーへの接続がうまくいきますと、秘密鍵のパスフレーズを聞かれますので、サーバー上で設定したパスフレーズを入力してください。
もし、認証が失敗する場合はセッション情報やパスフレーズが正しいかどうか再度確認します。
認証が通ればサーバーとの接続が完了し「SCP」「SFTP」での通信が確立されます。この状態でしっかり暗号化がされていますので、安心して通信を行うことができます。
まとめ
お疲れさまでした。これで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
コメント
コメント欄を開く