FTP/SFTP/SCP

FTP

概要

FTP(File Transfer Protocol)はサーバーとクライアント間で、ファイルを送受信する通信の決まりごと(プロトコル)である。FTPという用語だけで、本来の意味である通信方法以外にも、FTPサーバーやFTPクライアント(ソフト)など、多用な意味を持って語られることが多い。FTPサーバーはインターネット側に位置し、Webサーバーとつながっているので、FTPサーバーを操作することによりWebサーバー内のファイルを制御できる。FTPにはサーバー側にもクライアント側にも、PIとDTPという専門的なプログラムが含まれている。

PI

PIとはProtocol Interpreter(プロトコルインタプリタ)の略で、指示内容をプロトコルインタプリタ(翻訳)することを担当している。そしてサーバー側とクライアント側双方のPIが、互いに通信し合っている。FTPクライアントによる操作が、直接FTPサーバーに影響するわけではなく、インタプリタ(翻訳)という中継ぎが存在している。

DTP

DTPとはData Transfer Process(データトランスファープロセス)の略で、実質的なデータ転送プロセスを示しています。先に説明したPIとこのDTPの2つが揃って初めて、念願のファイル転送が実現できる。なおDTPもサーバー側とクライアント側両方にあり、相互に通信するだけでなく、PIとも連携している。

SFTP

概要

FTPをセキュリティの面で、より安全にした改良版のひとつがSFTPである。SFTPのSとは、SSH(セキュアシェル)の頭文字だ。SFTPはFTPの利便性を損なわず、さらにFTPSSHの安全性を付加している。FTPは、通信経路が暗号化されていないので悪意をもった第三者から盗視や侵入される可能性がある。

SSH

SSHとは、Secure Shell(セキュアシェル)の略称で、リモートコンピュータと通信するためのプロトコルである。認証部分を含めネットワーク上の通信がすべて暗号化されるため、安全に通信することができる。SSHでは公開鍵暗号を利用し、共通鍵を暗号化して鍵交換を行っている。かつ、通信自体は高速な共通鍵暗号を用いているため、速度低下を抑えている。

SCP

概要

Secure Copy(scp)は、sftp同様、Secure Shell(ssh)に含まれるsshの機能を使ってセキュリティの高い(セキュアな)ファイル転送を行うコマンドの 1 つである。scpで使用される通信プロトコルは、Secure Copy Protocol(SCP)と呼ばれる。

認証情報(たとえばパスワード認証なら、ユーザー名やパスワード)と、セッション中でやり取りされるデータとの両方ともが、暗号化されてネットワーク上を流れる。Unixで古くから使われているリモートファイル転送コマンドrcp(Remote CoPy)のセキュアなバージョンといえる。コマンドラインの指定方法はrcpとほぼ同じである。rcpは暗号化などに対応しておらず、安全ではない。ある種のシステムではrcpという名前で起動しようとするとscpコマンドを実行する。

ssh-agentコマンドなどと組み合わせて利用すれば、コピー時に認証情報の入力が不要で、cpやrcp同様に利用できる。SSHを介してファイル転送を行うプロトコルとしてはSSH File Transfer Protocol(以下SFTP)があり、両者はしばしば比較される。その際、SCPはより軽く、SFTPはより高機能と表されることがある。